如何将JSF bean注入spring bean

时间:2013-06-27 19:38:36

标签: spring jsf spring-mvc spring-security jsf-1.2

我正在研究一个遗留的JSF应用程序,我们正在慢慢移植到Spring MVC。我们使用Spring Security来控制登录信息。在将用户登录后,JSF页面全局实例化无处不在的会话范围bean 。我想更改应用程序,以便我们可以转到使用Spring MVC开发的页面。

我尝试过的一种方法是将bean转换为spring bean并将其注入JSF,但不幸的是,结果需要对bean进行大量更改才能实现。我想到的一个可能的黑客是在将用户发送到Spring MVC页面之前添加一个特殊的重定向JSF页面来初始化JSF bean。这看起来有点像黑客,所以我正在寻找另一种解决方案。

在我访问Spring页面之前是否有其他方法可以强制会话范围bean进行初始化,以便我可以将bean拉出会话?

1 个答案:

答案 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中。

相关问题