爲了一致性和簡單性,我想在我的控制器周圍傳遞一個會話作用域bean bean,但這似乎不可能OOTB。希望有人能提供建議。Spring 3 MVC:在MVC Controller方法參數中公開會話作用域bean
問:能會話作用域的bean公開爲MVC控制器參數
似乎有此註釋:@SessionAttributes(「爲myBean」)然而,這僅保留控制器級別的範圍。
我正在尋求避免與HttpSession進行交互,而是通過我的控制器一直傳遞我的域對象圖。這似乎是一個相當標準的要求。
這有優點:
- 可測性 - 只是注入bean來測試,而不必模擬出的HttpSession
- 抽象 - 避免的Servlet模型的關注,只是業務問題
這裏的當前配置:
@Controller
@SessionAttributes("customer")
public class LoginController {
@Inject Customer customer;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String welcome(Customer customer) {
...
return "loginDetailsView";
}
public String processLogin(@Valid Customer customer, BindingResult bindingResult) {
...
if (bindResult.hasErrors()) {
return "loginDetailsView";
else {
return "homePageView";
}
}
'客戶' 會議是一個是使用XML常規POJO配置AOP-代理(CGLIB),以允許會話作用域bean被注入到單身(控制器和服務類):
<beans:bean id="customer" class="com.mypackage.domain.Customer" scope="session">
<aop:scoped-proxy proxy-target-class="true"/>
</beans:bean>
以下問題是幾乎相同的,但沒有這些答案不涉及對Spring 3核心框架的擴展。
這是故意忽略了春天的設計師?我的意圖是使用域模型來支持表單而不使用「表單bean」和一個映射器層。
任何人都可以建議一種方式/或指出這是否是不好的做法?
提供量身定製的解決方案之前的問題:
How to pass a session attribute as method argument (parameter) with Spring MVC
請注意:試圖儘量減少對Spring框架的依賴和使用註釋支持ESP JSR-303等,將採取任何開箱即用的解決方案 - 請不要」 t建議自定義擴展。