我正在研究一个遗留的JSF应用程序,我们正在慢慢移植到Spring MVC。我们使用Spring Security来控制登录信息。在将用户登录后,JSF页面全局实例化无处不在的会话范围bean 。我想更改应用程序,以便我们可以转到使用Spring MVC开发的页面。
我尝试过的一种方法是将bean转换为spring bean并将其注入JSF,但不幸的是,结果需要对bean进行大量更改才能实现。我想到的一个可能的黑客是在将用户发送到Spring MVC页面之前添加一个特殊的重定向JSF页面来初始化JSF bean。这看起来有点像黑客,所以我正在寻找另一种解决方案。
在我访问Spring页面之前是否有其他方法可以强制会话范围bean进行初始化,以便我可以将bean拉出会话?
答案 0 :(得分:0)
如果您正在使用Spring MVC,您可以将“bean”设置为Model属性,然后使用Controller上的注释,处理程序方法和创建您的实例的方法将其自动加载到会话中豆。您的控制器看起来像这样:
@Controller
@SessionAttributes({"myBean"})
@RequestMapping("/myPath")
public class MyController {
@RequestMapping("/myPath2")
public String myHandler(@ModelAttribute("myBean") MyBean myBean) {
// ...do stuff, return view
}
@ModelAttribute("myBean")
MyBean createMyBean() {
// Create and init an instance
return new MyBean();
}
}
只要没有MyBean,就会为你创建一个神奇的MyBean,只要你用“myBean”更新Model(或ModelAndView),它就会神奇地添加到Session中。