关于Jfinal渲染的问题。

有一个页面上有3个div(也就这么3个div,其中一个div的id叫“first”),我想加载这个页面的时候,将另外一个页面中(first.html)的内容放入其中一个div中。用的是JQuery的方法。

$("#first").load("/page/first.html");

但是我这个first.html中有

 #(session.user.userName)
 这样jFinal模板引擎的代码。

放进去之后,在页面上没渲染出来,就把这个

“#(session.user.userName)”这端字直接显示出来了。

波神,有啥好方法,可以渲染出其中的值。

直说Jfinal的方法,不说JS的问题。

比如把那个first.html中的内容直接复制到div中,确实可以,但是我不能用。

我后续还有很多权限的判断需要用到这个问题的解决方法。

波神,求指导!

评论区

JFinal

2017-04-21 11:20

问题描述得不是很清楚,我只能先猜一猜

添加 me.add(new SessionInterceptor()) 了没有?
注意 # 这个字符要是英文输入,不能是中文全角输入

Ferrari8899

2017-04-21 11:23

@JFinal 没有用这个me.add(new SessionInterceptor())。我的问题是,#()里面的内容无法渲染出来,因为整个页面是用JS加载的div,div里面含有#()的东西,就当普通文字一样的渲染,并没有当指令渲染其中的内容。

Ferrari8899

2017-04-21 11:24

@JFinal public void configInterceptor(Interceptors me) {
me.add(new SessionInViewInterceptor());//session拦截器,用于在View模板中取出session值
}
这个我之前就加了的。

JFinal

2017-04-21 11:29

这样就好解决了,让 js 请求 action,假定你的这个 div 在一个名为 "div.html" 的文件之中,这样来用一下 controller 中的 renderToString:
String ret = renderToString(...);
renderHtml(ret);

你还可以通过下面的代码在 controller 之外任意去用 Engine 对象:
Template template = RenderManager.me().getEngine().getTemplate("div.htm
String ret = template.renderToString(...);

Ferrari8899

2017-04-21 11:33

@JFinal renderHtml(ret);这个ret怎么在页面中怎么获取呢?

Ferrari8899

2017-04-21 11:43

@JFinal 就是一个html文件中含有#(session ....)这些东西,但是这个html文件不直接加载,而是放在另外一个html文件中的一个div中加载,就是$("#id").load("url");结果就是#(session ....)这些东西当成了文字加载,没有渲染出来。

JFinal

2017-04-21 11:49

@Ferrari8899 前面说得已经很清楚了,你先将这个 div 内容从 template 中过一遍,这样就生成了动态内容,生成的内容再发给客户端的 js:
renderHtml(renderToString("div.html"));

关键点在于,你要将 div 的内容先用模板引擎渲染一次,然后将渲染的结果响应给:
$("#id").load("url");

Ferrari8899

2017-04-21 11:50

@JFinal 哦,懂了,谢谢!我去试一下!

JFinal

2017-04-21 11:51

@Ferrari8899 记得搞定后回来分享一下

Ferrari8899

2017-04-21 11:52

Ferrari8899

2017-04-21 13:52

@JFinal还没搞定。renderHtml(renderToString("div.html"));在后台总是报错。
public void first(){
Template template = Engine.create("myEngine").getTemplate("/page/first.html");
renderHtml(template.renderToString("");
}
我这样写的话,也是报错。renderToString()括号中的参数怎么配?

Ferrari8899

2017-04-21 14:16

@JFinal 解决了,renderTemplate就搞定了。

JFinal

2017-04-21 14:50

@Ferrari8899 靠,比我告诉你的方法还简单,牛逼

热门反馈

扫码入社