SpringMVC 文檔提到了 @SessionAttributes annotation,和 @ModelAttribute 配合使用可以往 Session 中保存或者從 Session 中取指定屬性名的具體對象。
@Controller
@SessionAttributes("currentUser")
public class GreetingController {
@RequestMapping
public void hello(@ModelAttribute("currentUser") User user) {
//user.sayHello()
}
}
不管是多麼複雜的表單均可以通過Form Bean的方式進行處理,大大簡化複雜表單的處理。
採用Spring的Form標籤,而我比較喜歡原始的JSP和HTML。
閒話少說,現在正式開始我們的複雜Form處理,我的Form Bean結構如下:
FormBean的結構如下: private String name;
private int age;
private String[] associate;
private ComBen[] bens; //另一個數組對像
//ComBen的結構如下:
private String com;
private int[] typevalue;
private String[] typename;
private ThirdBen[] thdben;//再一層數組對像
//ThirdBen的結構如下:
private String thdname;
private String value[];//又一層數組值
相信已經足夠複雜了,我們只需要new 一個FormBean並添加到 request :
@RequestMapping(value="/test/testForm.do")
public String testFormBean(ModelMap model){
model.addAttribute("formBean", new FormBean());
return "formbean.jsp"
}
(注意:這個要與jsp中的modelAttribute相同)。
再看看我們的formbean.jsp頁面中的Form如何編寫:<!-- 複雜form對像測試 -->
<form modelAttribute="formBean" method="POST" action="/test/testForm.do">
<input name="name" value="name" />
<input name="age" value="12" />
<input name="associate[0]" value="ass1" />
<input name="associate[1]" value="ass2" />
<input name="associate[2]" value="ass3" />
<input name="bens[0].com" value="bean common1" />
<input name="bens[0].typevalue" value="1" />
<input name="bens[0].typename" value="tname1" />
<input name="bens[0].typevalue" value="2" />
<input name="bens[0].typename" value="tname2" />
<input name="bens[0].typevalue" value="3" />
<input name="bens[0].typename" value="tname3" />
<input name="bens[0].thdben[0].thdname" value="thdname1" />
<input name="bens[0].thdben[0].value" value="thdvalu11" />
<input name="bens[0].thdben[0].value" value="thdvalu12" />
<input name="bens[0].thdben[1].thdname" value="thdname2" />
<input name="bens[0].thdben[1].value" value="thdvalu21" />
<input name="bens[0].thdben[1].value" value="thdvalu22" />
<input name="bens[1].com" value="bean common2" />
<input name="bens[1].typevalue" value="21" />
<input name="bens[1].typename" value="tname21" />
<input name="bens[1].typevalue" value="23" />
<input name="bens[1].typename" value="tname23" />
<input type="submit" value="提交" />
</form>
簡潔吧,我們只要把上述form提交到Controller,就可以在Controller中直接得到這個複雜的FormBean對像;
看完這個例子,相信大家可以處理任何的複雜表單了。