Moin Moin,
ich hoffe, dass mir hier jemand helfen kann.
Ich nutze in einer Webanwendung den durch Spring bereit gestellten MultiActionController.
Dieser besitzt eine Methode, die mir mit Hilfe des übergebenen Validators und des übergebenen Command Objektes die Fehler zurück geben soll. Diese sind wie folgend aus:
Weiter hin habe ich ein Formular, an das ich das Command Objekt gebunden habe, mit Hilfe der <form:..> Tags. Beim Absenden des Formulares wird folgende Methode aufgerufen:
In einem kleineren Beispiel, das ich zuvor konstruiert hatte, klappt dies auch soweit. Bei dem oben genannten Fall tritt allerdings folgender Fehler auf:
Und ich kann mir nach langen hin und her einfach nicht erklären wieso.
Ich hoffe, dass mir hier jemand einen Tipp geben kann.
Vielen Dank schon mal.
Torben
ich hoffe, dass mir hier jemand helfen kann.
Ich nutze in einer Webanwendung den durch Spring bereit gestellten MultiActionController.
Dieser besitzt eine Methode, die mir mit Hilfe des übergebenen Validators und des übergebenen Command Objektes die Fehler zurück geben soll. Diese sind wie folgend aus:
Code:
protected final BindException bindObject(final HttpServletRequest request, final Object command, final Validator validator)
throws Exception {
this.bind(request, command);
ServletRequestDataBinder binder = this.createBinder(request, command);
binder.bind(request);
BindException errors = new BindException(command, this.getCommandName(command));
if (validator.supports(command.getClass())) {
ValidationUtils.invokeValidator(validator, command, errors);
}
return errors;
}
Weiter hin habe ich ein Formular, an das ich das Command Objekt gebunden habe, mit Hilfe der <form:..> Tags. Beim Absenden des Formulares wird folgende Methode aufgerufen:
Code:
public final ModelAndView saveChanges(final HttpServletRequest request, final HttpServletResponse response, final Messe command)
throws Exception {
ModelAndView mav = new ModelAndView("edit");
mav.addObject("command", command);
BindException errors = this.bindObject(request, command, new EditValidator());
if (errors.hasErrors()) {
mav.addAllObjects(errors.getModel());
return mav;
}
return mav;
}
In einem kleineren Beispiel, das ich zuvor konstruiert hatte, klappt dies auch soweit. Bei dem oben genannten Fall tritt allerdings folgender Fehler auf:
Code:
org.springframework.web.bind.ServletRequestBindingException: Errors binding onto object 'command'; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'command' on field 'name': rejected value [Ulm]; codes [jsp.all.test.message.command.name,jsp.all.test.message.name,jsp.all.test.message.java.lang.String,jsp.all.test.message]; arguments []; default message [null]
org.springframework.web.bind.ServletRequestDataBinder.closeNoCatch(ServletRequestDataBinder.java:119)
org.springframework.web.servlet.mvc.multiaction.MultiActionController.bind(MultiActionController.java:499)
org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:431)
org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:372)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:774)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:460)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:425)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
Und ich kann mir nach langen hin und her einfach nicht erklären wieso.
Ich hoffe, dass mir hier jemand einen Tipp geben kann.
Vielen Dank schon mal.
Torben