jfinal实现前端页面同步加载

这几天做课程设计写项目用到了jfinal框架,之前只用过Struts2+jsp。我在前端想实现网页同步加载,之前Struts2的s:action很容易就解决这个问题了,但是jfinal里面苦思不得其解。后来请教波总,大佬教我两种方案,一种是利用enjoy引擎进行粗暴的同步加载,另外一种是利用ajax进行异步加载,我这里为了赶进度用的是同步加载方法。具体使用如下:

首先自定义action标签,具体是这样

//自定义action指令
public class HotelImageDirective extends Directive {

    @Override
    public void exec(Env env, Scope scope, Writer writer) {
        String action = exprList.eval(scope).toString();
        System.out.println(action);
        String actionResult = HttpKit.get("http://localhost:8082/image/getHotelImage/" + action);
        write(writer, actionResult);
    }
}

在configEngine这样配置:

me.addDirective("hotel", HotelImageDirective.class);

这样使用:#hotel(hotel.h_id)

意思就是手动创建一个URL,然后得到渲染的界面,同步写入到前端。

初次写反馈,有不足的地方请多包涵,有问题可以私信我。

 


评论区

JFinal

2019-05-12 22:12

可以做得更通用一点,做成 ActionDirective,可以接受一个 url 参数,这么来用:
#action("/image/getHotelImage")

感谢分享,期待再出一个异步版本的

好好学习1111

2019-05-13 21:50

@JFinal 我之前这么用结果后台报错,说通信协议有问题,我不得已就在后台写了完整的URL,前端只传一个参数。

北流家园网

2019-05-19 09:37

能搞成ajax形式吗?