关于enjoy的2个问题

1、enjoy无法读取request中的attribute但可以读取model中的attribute

@RequestMapping

public String menuTree(HttpServletRequest request,Model model,HttpSession session) {

System.out.println(testService.getString());

request.setAttribute("test", testService.getString());//无法读取

model.addAttribute("test", testService.getString());//可读取

session.setAttribute("test", testService.getString());//可读取

return "NewFile";

}

#(test)

#(session.test)



2、我想把contextPath通过addShareObject传到页面

public void addSharedObject(String name, Object object) {		
engine.addSharedObject(name, object);	
}

但在配置bean时怎么传2个参数

 <bean id="viewResolver" class="com.jfinal.template.ext.spring.JFinalViewResolver">

  <property name="devMode" value="true" />

  <property name="sharedObject"></property>

  <property name="sessionInView" value="true" />

  <property name="prefix" value="/view/" />

  <property name="suffix" value=".html" />

  <property name="order" value="1" />

  <property name="contentType" value="text/html;charset=utf-8" />

  </bean>

还有就是contextPath是在request里面,共享request是否是线程安全的

评论区

JFinal

2017-08-31 17:08

spring 的 view 扩展应该是默认就可以读取 requset.setAttribute(...) 属性的,如果确实不可以读取,添加一下如下的配置:
exposeRequestAttributes = true

由于回复不支持 xml 标记,上面的配置改成 propertye name="setExposeRequestAttributes" value="true" 即可,记得搞定后回来再反馈一下

contextPath 可以设置为 sharedObject,这样就不会污染 request 中的 attribute 了,拿到 JFinalViewResolver 对象,然后调用一下 addSharedObject(...) 将 contexPath 添加进来就可以了

contextPath 对于一个启动后的项目来说一直是不变的一个常量,所以在 request 里面是线程安全的

ttjs2013

2017-08-31 17:31

@JFinal 后就可以读到 requset.setAttribute(...) 属性。波总,还想请教一个问题,我想在项目加载完的时public void onApplicationEvent(ContextRefreshedEvent event)就调用addSharedObject,但是发现获取不到request,这个怎么处理?

JFinal

2017-08-31 17:36

@ttjs2013 在 spring 中获取 request 这个早就忘了,spring 是一定有一种回调方式,让你自己的代码做初始化的,建议找找相关资料

此外,你可以通过 JFinalViewResolver.engine.addSharedObject(....) 等方法来配置在 spring 用到的这个 engine 对象,只要找个合适的初始化回调的地方就可以了

你是怎么解决的在模板中得到 request 数据的,如何配置的?

ttjs2013

2017-08-31 17:43

@JFinal 原来xml被屏蔽了刚刚没有发现,propertye name="exposeRequestAttributes" value="true"。在class="com.jfinal.template.ext.spring.JFinalViewResolver"加上刚刚那个就行

JFinal

2017-08-31 17:49

@ttjs2013 这个配置会在 jfinal 3.3 中默认给加上去

热门反馈

扫码入社