jfinal 能不能异步返回一个视图

jfinal 能不能异步返回一个视图(Modelandview),类似于ssm框架里面的,apringmvvc返回一个Modelandview

评论区

lyh061619

2020-05-07 19:31

不知跟你的应用场景对不对个,其实这个问题很简单换个思路即可,比如场景:一个列表请求页面,页面渲染显示、拉取数据分两部走,可以在不需要类似sapringmvvc返回一个Modelandview即可实现异步请求,
1、后台代码:
public void index() {
var async = get("async");
var tab = getInt("tab", -1);
var stime = get("stime");
var etime = get("etime");

if (sl.isEmpty(async)) {
render("index.html");
return;
}

set("tab", tab).set("stime",stime).set("etime", etime);

var logPage = logAdminService.paginate(getPageNumber(), getPageSize(), tab, stime, etime);
var ret = Okv.by("code", 0).set("msg", "").set("count", logPage.getTotalRow()).set("data", logPage.getList());
renderJson(ret);
}
2、前台代码:
$.ajax({
type: "POST",
url: "/admin/log",
data: {
tab: $("#tab").val(),
async: 1,
stime: $("#stime").val(),
etime: $("#etime").val()
},
success: function(ret){
}
});
2、在请求中加一个异步参数async。
3、在第一次请求传入参数async为空表示只渲染界面显示,当async不这空则表示拉取数据,这个即可实现渲染数据、拉取数据两步头;最后拉取数据那部分页面代码是通过ajax步请求。

你妹啊

2020-05-07 21:12

@lyh061619 @lyh061619 可能不太一样,你这个是条状一个新页面,我的是在原来的页面,通过异步请求,在之前的页面追加视图页面。

lyh061619

2020-05-07 22:06

@你妹啊 一样的思路稍做调整,如直接把renderJson(ret)改为renderToString("HTML片段")即可,
1、后台代码:
public void index() {
var async = get("async");
var tab = getInt("tab", -1);
var stime = get("stime");
var etime = get("etime");

set("tab", tab).set("stime",stime).set("etime", etime);

var logPage = logAdminService.paginate(getPageNumber(), getPageSize(), tab, stime, etime);
var ret = Okv.by("code", 0).set("msg", "").set("count", logPage.getTotalRow()).set("data", logPage.getList());
rendertoString("_item.html", ret);
},

2、编写_html.html片段代码,例如:






#for(list: data) .....#end


3、前台调用返回html片段
$.ajax({
type: "POST",
url: "/admin/log",
data: {
tab: $("#tab").val(),
stime: $("#stime").val(),
etime: $("#etime").val()
},
dataType: "html"
success: function(ret){
$("#content").val(ret);
}
});

你妹啊

2020-05-08 10:04

@lyh061619 我试一下,谢谢回复帮助

你妹啊

2020-05-08 16:57

已经解决,希望遇到同样需求的朋友们参考。Controller里面 setAttr(key, value),然后再 render(xxx.html);前台的ajax的 dataType: 'html', //返回的数据格式:json/xml/html/script/jsonp/text即可解决。

热门反馈

扫码入社