Spring MVC POJO绑定解释

Spring MVC POJO绑定解释

问题描述:

我想了解对象的绑定在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; 
    } 


} 

根据该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