html文件中的#()这些指令的问题

请教一个问题,在html中的这些类似#(),#if,#define这些指令,貌似是只能通过render渲染的界面可以获取到值,如果是redirect指向的界面则不可以?例如我render("index.html"),但index.html文件中使用scr="top.html",这样套了另一个界面,那么top.html这个界面中的#()就什么都获取不到了。

另外我还想问一下,用jfinal的时候,可以完全用html代替jsp吗?谢谢!

评论区

JFinal

2017-07-28 14:43

#()、#if、#define 这些都是 jfinal template engine 的指令,那么只有在针对某个模板文件使用 render(...) 的时候,才能去解析这些指令

因此,scr="top.html" 这类方式指向的 html 是根本没有通过 template engine 解析过的,所以里面的指令不会得到处理

解决办法是让 src 指向一个 action,然后这个 action 中进行 render("top.html"),或者通过 #include("top.html") 与 #render("top.html") 进行渲染

使用 jfinal template engine 可以完全代替 JSP,并且学习成本十分之低,使用十分之方便

ThreeX

2017-07-28 16:18

如果你说你的项目使用了jfinal3.x,却还是用jsp,freemarker之类,相当于并没有真正使用jfinal3.x,跟2.2没什么区别。

yzdoraemon

2017-07-28 19:05

@ThreeX 我是新手啊,确实不太会呢,怎么才能更好的学习

yzdoraemon

2017-07-28 19:07

@JFinal 非常感谢老大,我这个问题解决了,但#()这个只能获取setAttr,这样的request范围的属性,怎么获取session的呢,手册中写道getSessionAttr方法,应该是在java代码中才可以用的吧

JFinal

2017-07-28 21:32

@yzdoraemon 添加一个拦截器即可:
me.add(new SessionInViewInterceptor())

然后在页面中可以这样使用:
#(session.obj)

热门反馈

扫码入社