Как управлять проверкой в ​​форме GET и отправить форму POST? - PullRequest
1 голос
/ 10 октября 2010

среда Spring 3.0 с новой функцией Vallidation.Я создаю аннотированный контроллер (ResetUserPasswordController), который управляет showForm по HTTP.GET и формой отправки по HTTP.POST.Функция представляет собой пароль пользователя для сброса, запрашиваемый по электронной почте: ранее пользователь получал доступ к другой форме, где я заполнял адрес электронной почты и элемент управления recaptcha. Если recaptcha правильный, пользователь получает письмо со ссылкой, содержащей параметр.Два метода (в HTTP.GET и HTTP.POST) имеют два разных командных компонента, имеющих разные параметры (я выбираю два разных компонента для управления процессом валидации в двух разных классах валидаторов).Вероятно, вы спрашиваете: почему вы определяете две разные команды?Я определил следующую роль: Каждый бизнес-процесс и базовый (например, проверка недействительности и т. Д.) Должен управляться классом валидатора, который поддерживает определенный командный компонент

Я хочу создать istance командного компонента, управляемогоPOST, в методе GET, но во время некоторых тестов я понял, что это может быть не правильно, потому что, если процесс проверки идет плохо, у меня есть все ошибки в команде ввода, которые отличаются от того, что я собираюсь добавить в возвращенный ModelAndView.

У кого-то есть предложение правильно управлять этим сценарием?

@RequestMapping(method = RequestMethod.POST)
public ModelAndView processSubmit(@Valid @ModelAttribute("command") ResetUserPasswordCommand command, BindingResult result, HttpServletRequest request, HttpServletResponse response) {
    getValidator().validate(command, result);

    if (result.hasErrors()) {
        // TODO : implements error page.
        return new ModelAndView();
    } else {
        Map<String, Object> model = new HashMap<String, Object>();

        try {
            PasswordChangeRequest passwordChangeRequest = getUserService().findPasswordChangeRequest(command.getUuid());
            getUserService().updateUserPassword(command.getUuid(), command.getPassword());
            autoLogin(request, response, passwordChangeRequest.getAccount(), command.getPassword());
        } catch (ApplicationThrowable aex) {
            return new ModelAndView("responseKO", model);
        }

        return new ModelAndView("Home", model);
    }

}

@RequestMapping(method = RequestMethod.GET)
public ModelAndView setupForm(@Valid @ModelAttribute("command") ResetUserPasswordFormCommand command, BindingResult result) {
    getFormValidator().validate(command, result);

    if (result.hasErrors()) {
        // TODO : implements error page.
        return new ModelAndView();
    } else {
        Map<String, Object> model = new HashMap<String, Object>();
        ResetUserPasswordCommand resetUserPasswordCommand = new ResetUserPasswordCommand();
        resetUserPasswordCommand.setUuid(command.getUuid());

        model.put("command", resetUserPasswordCommand);
        model.put("reCaptchaHTML", getReCaptchaService().getReCaptchaObjectNoSSL().createRecaptchaHtml(null, null));

        return new ModelAndView("user/ResetUserPassword", model);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...