2013-04-18 20 views
0

在檢查Spring中的錯誤之前,我可以在BindingResult中添加值嗎?在檢查Spring中的錯誤之前,我可以在BindingResult中添加值嗎?

@InitBinder("memberrequest") 
    public void initMemberRequestBinder(WebDataBinder binder) { 
     binder.setValidator(new MemberRequestValidator()); 
    } 


@PreAuthorize("isAuthenticated()") 
    @RequestMapping(value = "/save", method = RequestMethod.POST) 
    public ModelAndView saveRequest(@Valid @ModelAttribute("memberrequest") MemberRequest mr, BindingResult result, HttpSession session) { 

     session.setAttribute("phone", mr.getPhonenumber()); 

     mr.setWelfare((String)session.getAttribute("welfare")); 
     mr.setSchool((String)session.getAttribute("school")); 
     mr.setTitle((String)session.getAttribute("title")); 
     mr.setDistrict((String)session.getAttribute("district")); 
     mr.setName((String)session.getAttribute("name")); 
     mr.setFile((String)session.getAttribute("file")); 
     mr.setQueue((String)session.getAttribute("queue")); 
     mr.setRequestor(getUser()); 
     mr.setSchool_id((String)session.getAttribute("school_id")); 
     mr.setBorough_id((String)session.getAttribute("borough_id")); 
     mr.setRetiree((String)session.getAttribute("retiree")); 


     if (result.hasErrors()) { 
      LOGGER.debug("Pages had errors on it... returning to input page"); 
      return new ModelAndView("w-question"); 
     } else { 

我上面的代碼在我的春天控制器,但問題是,我需要採取一些價值出來的會話,並將其移動到BindingResult(Bean)的驗證上,然後再運行..

這可以做某人嗎?問題是一些我一直在會話中值..請我知道,如果這是可以不又是怎樣做到這一點的最好辦法..

回答

2

在你CONTROLER定義方法創建模型屬性附加傷害,並對其進行批註用@ModelAttribute註解。 其實你會不會修改綁定結果對象本身,而是確認目標,然後你可以改變你的驗證行爲,您需要更改綁定的結果。

@ModelAttribute("memberrequest") 
public MemberRequest getMemberRequest(HttpSession session) { 
MemberRequest mr = new MemberRequest(); 
    mr.setWelfare((String)session.getAttribute("welfare")); 
    mr.setSchool((String)session.getAttribute("school")); 
    mr.setTitle((String)session.getAttribute("title")); 
    mr.setDistrict((String)session.getAttribute("district")); 
    mr.setName((String)session.getAttribute("name")); 
    mr.setFile((String)session.getAttribute("file")); 
    mr.setQueue((String)session.getAttribute("queue")); 
    mr.setRequestor(getUser()); 
    mr.setSchool_id((String)session.getAttribute("school_id")); 
    mr.setBorough_id((String)session.getAttribute("borough_id")); 
    mr.setRetiree((String)session.getAttribute("retiree")); 
return mr; 

} 

此方法將結合ocures之前被調用,但在注意,此方法將每個CONTROLER方法至極之前被調用使用@ModelAttribute(「memberrequest」)作爲參數。

+0

意願也僅此控件被調用,我仍然不看你怎麼走對象,從會話 – SJS

+0

春天添加值創建MemberRequest對象時會調用該方法。但是,如果你在表單中有定義的值將會從形式overvriten你是從會話設置字段。 –

相關問題