这几天做课程设计写项目用到了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,然后得到渲染的界面,同步写入到前端。
初次写反馈,有不足的地方请多包涵,有问题可以私信我。
#action("/image/getHotelImage")
感谢分享,期待再出一个异步版本的