2017-09-28 20:22

不提供反序列化不是因为有成熟的,如果是这个原因序列化也不会提供,是因为反序列化后类型错误,没有哪个jar可以反序列化出正确类型,在model中不存在类型的定义,所以如果需要正确的反序列化,还是需要常规的Bean

2017-05-18 12:47

@JFinal 解决方式
WebAppContext context = new WebAppContext("/","/");
........
context.setResourceBase("/WEB-INF");
........
随便设置一个路径就可以了,不存在也没关系


最好还是改下jFinal源码,不在启动时做异常检查,因为有些时候不需要模板引擎的,不设置路径就导致启动不了

设置jfinal的PathKit.setWebRootPath不行,主要是jFinal.initPathUtil会重新设置PathKit.setWebRootPath,所以后面执行的engine.setBaseTemplatePath就会有问题

2017-05-17 18:17

上面写错了
“在windows下debug显示参数baseTemplatePath为盘符(E:/),在linux下为/”
改为:
在windows下debug显示参数baseTemplatePath为盘符(E:),在linux下为空

2017-05-17 18:12

2017-05-09 12:56

我是这样处理的,将需要刷新的div创建一个Directive,在相应模板中引入,需要刷新时,调用ajax,执行后端指令渲染,代码如下:

Engine engine = RenderManager.me().getEngine();
String[] params = getParaValues("params");// 指令参数
String name = getPara("name");// 指令名称
if(engine.getDevMode()){
log.info("页面请求指令:"+name+",参数:"+StringUtils.join(params));
}
try{
renderHtml(engine.getTemplateByString("#"+name+"("+StringUtils.join(params, ",")+")").renderToString(new HashMap()));
}catch(Exception e) {
log.warn("请求指令异常", e);
renderNull();
}

这块代码可以执行任意的指令标签局部刷新,用起来我觉得比你上面类beetl的处理方式灵活点

还有点需要注意就是上面的params参数,这个参数需要在对应指令里设值,设值的简化代码如下:
data.put("dataJson", JsonKit.toJson(exprList.evalExprList(scope)[0]));
就是将标签的参数传到页面上,便于ajax刷新标签时带参数

2017-04-08 09:56

上面回复里的html标签全没了,不能理解的话我再发

2017-04-08 09:54

可能描述的不清晰,上面的模板C是自定义指令里使用的模板文件,在模板B中使用该指令时,无法调用指令中的js()模板函数,因为指令js仅仅在直接引用模板A的模板下是可以被调用的
不能截图,大致写下三个文件的代码
---------------------------------------------------------------------------------------
A模板文件:
#define layout()



........
#@main()
.......
#@js?()


#end
---------------------------------------------------------------------------------------
B模板文件:
#include("A.html")
#@layout()
.....
#define main()
......


#hotTrade({"titleName":"XXX标题","num":4})

.......
#end
---------------------------------------------------------------------------------------
C模板文件,为自定义指令hotTrade使用的模板文件,大致代码如下:
.......

#define js()

#end

---------------------------------------------------------------------------------------
问题是:在模板A中无法调用指令hotTrade模板中的js()