2010-04-27 64 views
0

我想了解對象的綁定在spring mvc中是如何工作的。我有一個Controller設置如下,並希望將freemarker模板綁定到accessRequestBean。在模板中,我有'< @ spring.bind「command.accessRequestBean」/>「,但這會導致錯誤...我如何將表單綁定到POJO?Spring MVC POJO綁定解釋

@Controller 
@PreAuthorize("isAuthenticated()") 
@RequestMapping("/access") 
public class RemoteVendorAccessController { 
    private Logger logger = Logger.getLogger(this.getClass().getName()); 

    @Autowired 
    private AdDao adDao; 

    @Autowired 
    private CadaDao cadaDao; 

    @Autowired 
    private UserAccessCache userAccessCache; 

    private AccessRequestBean accessRequestBean; 

    @RequestMapping(method = RequestMethod.GET) 
    public String requestAccess(ModelMap map){ 
     String username = SecurityContextHolder.getContext().getAuthentication().getName(); 
     map.addAttribute("title", "Remote Vendor Access Request Form"); 

     try { 
      AdUser user = adDao.getUserFromNt(username); 
      map.addAttribute("user", user); 
     } catch (UserDoesNotExistException e) { 
      String error = "Could not get user information from AD"; 
      map.addAttribute("error", error); 
      logger.error(error + "[" + username + "]", e); 
     } 

     // Get users manager 
     AdUser manager = null; 
     try { 
      manager = adDao.getManagerFromNt(username); 
      map.addAttribute("manager", manager);   
     } catch (Exception e) { 
      String error = "Could not get manager information from AD"; 
      map.addAttribute("error", error); 
      logger.error(error + "[" + username + "]", e); 
     } 

     return("access"); 
    } 

    @RequestMapping(method = RequestMethod.POST) 
    public String processRequest(ModelMap map){ 
      // Want to validate POJO bean here   
     return(null); 
    } 

    public AccessRequestBean getAccessRequestBean() { 
     return accessRequestBean; 
    } 

    public void setAccessRequestBean(AccessRequestBean accessRequestBean) { 
     this.accessRequestBean = accessRequestBean; 
    } 


} 

回答

2

根據該Spring Documentation,控制器獲取到保持通過使用上的方法參數@ModelAttribute註釋的形式輸入的數據的對象的引用。參數類型將是您的POJO類,它對應於用於在編輯模板上構建表單的對象。即

@RequestMapping(method = RequestMethod.POST) 
public String processRequest(
     @ModelAttribute POJO pojo, 
     BindingResult result, 
     ModelMap map){ 
    new POJOValidator().validate(pojo, result); 
    if (result.hasErrors()) { 
     return "pojoForm"; 
    } 
    . 
    . 
    . 
    return(null); 
} 
+0

現在,驗證器完成並出現一些錯誤後,如何訪問BidingResult錯誤?具體使用freemarker?解決這個問題有一些問題。 – wuntee 2010-04-28 20:23:48