Spring MVC POJO Bind Объяснение - PullRequest
       11

Spring MVC POJO Bind Объяснение

0 голосов
/ 27 апреля 2010

Я пытаюсь понять, как работает привязка объектов весной MVC. У меня есть контроллер, настроенный следующим образом, и я хочу, чтобы шаблон freemarker связывался с accessRequestBean. В шаблоне у меня есть <<spring.bind "command.accessRequestBean" /> ', но это вызывает ошибки ... Как мне связать форму с 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;
    }


}

1 Ответ

2 голосов
/ 28 апреля 2010

Согласно 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...