0

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

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

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

4

1 回答 1

0

如果您使用的是 Spring MVC,您可以使您的“bean”成为模型属性,然后使用控制器上的注释、处理程序方法和创建 bean 实例的方法的组合将其自动加载到会话中。你的控制器看起来像这样:

@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”更新模型(或 ModelAndView)时,它也会神奇地添加到 Session 中。

于 2013-06-27T20:13:15.003 回答