Spring MVC: BindingResult якобы объявлен без предшествующего атрибута модели - PullRequest
0 голосов
/ 22 сентября 2011

Я испытываю очень странное поведение с Spring MVC 3.1.0.M2, которое неожиданно выдалось:

@Controller
@RequestMapping("/admin/participants/{participantId}")
public class ParticipantEditController extends ParticipantControllerSupport {
    @ModelAttribute("participant")
    public Participant getParticipant(
        @PathVariable("participantId") final long participantId) {
        // ...
    }

    @RequestMapping(value = "/{tab}/edit", method = RequestMethod.PUT)
    public ModelAndView save(
        @ModelAttribute("participant") final Participant participant,
        final BindingResult errors) {
        // ...
    }
}

Когда я отправляю свою форму, я получаю следующее исключение:

java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
    at org.springframework.web.method.annotation.support.ErrorsMethodArgumentResolver.resolveArgument(ErrorsMethodArgumentResolver.java:60)
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:65)
    ...

Что меня беспокоит, так это то, что мой BindingResult не сразу же следует атрибуту модели в сигнатуре метода.

Я пробовал это с аннотацией @Valid и без неес более или менее другими параметрами, безрезультатно.

Кто-нибудь знает, что я делаю не так?Любая помощь с благодарностью.

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Я нашел проблему.Виновником был другой метод в родительском классе, который использовал '@ModelAttribute для вычисления другого атрибута модели:

@ModelAttribute("foobar")
public String getFoobar(@ModelAttribute("participant") Participant participant) {
    ...
}
0 голосов
/ 22 сентября 2011

Надеюсь, это не правильный ответ.Попробуйте не объявлять ваши параметры как окончательные. напр.

public ModelAndView save(
    @ModelAttribute("participant") Participant participant,
    BindingResult errors)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...