Автоматический возврат к форме ввода при сбое @Valid - PullRequest
2 голосов
/ 11 марта 2011

У меня есть следующий метод в моем контроллере:

@RequestMapping(value = "/status", method = RequestMethod.POST)
public String update(@Valid StatusForm statusForm, BindingResult result) {    
    if(result.hasErrors()) {
        return "statusForm";
    }
    //do stuff when there are no errors        
        return "dashboard";
}

Кажется, что во многих из этих методов есть повторяющийся кодовый блок:

if(result.hasErrors()) {
    return "statusForm";
}

Есть ли способ избежать необходимости вставлять этот блок и автоматически перенаправлять обратно туда, откуда поступил запрос POST в случае ошибок проверки?

Ответы [ 2 ]

0 голосов
/ 02 мая 2012

В методе вашего контроллера убедитесь, что аргумент BindingResult находится сразу после аргумента команды.

0 голосов
/ 11 марта 2011

Одно и то же действие может быть доступно с нескольких страниц, поэтому вам придется как-то настроить отображение ошибок. Например, в Struts у вас есть XML-файл, описывающий входную JSP для каждого действия. Вероятно, было бы возможно создать аннотацию, содержащую идентификатор представления, и реализовать AnnotationMethodHandlerAdapter для обработки этой логики.

Текущий способ сделать это в коде имеет одно преимущество. Это позволяет выполнять дополнительные проверки в вашем методе действий, например, проверять некоторые значения в базе данных или некоторые более сложные бизнес-правила и обрабатывать эти ошибки единообразным способом.

...