提交表单时的Spring绑定异常

卡住了,不知道为什么Spring表单在get Request调用中预先填充时无法成功提交[给出绑定问题]

loadForm,但是在setupFormObject带有@ModelAttribute注释标签的方法中填充时效果很好。我可以在github中提供一个简单的示例来测试是否要求:)

下面的例子

@ModelAttribute("showForm")

public ShowForm setupFormObject() {

//Instantiate showForm with data

return showForm;

}

@RequestMapping(method = RequestMethod.GET)

public ModelAndView loadForm(@RequestParam("id") String id, HttpSession session) {

ModelAndView modelAndView = new ModelAndView(nextPage);

//Instantiate showForm with data

//modelAndView.addObject("showForm", showForm);

return modelAndView;

}

@RequestMapping(method = RequestMethod.POST)

public String post(@ModelAttribute("showForm") ShowForm showForm, BindingResult result, final RedirectAttributes redirectAttrs) {

//I see changed data here in showForm when populated using @setupFormObject

//See an exception in JSP with binding error if populated in loadForm

return "";

}

根据要求进行堆栈跟踪。此异常来自github示例。

`HTTP Status 500 - Request processing failed; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'users[0]' of bean class [com.example.UserForm]: Illegal attempt to get property 'users' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'users' of bean class [com.example.UserForm]: Could not instantiate property type [com.example.UserEntity] to auto-grow nested property path: java.lang.InstantiationException: com.example.UserEntity`

`type Exception report`

`message Request processing failed; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'users[0]' of bean class [com.example.UserForm]: Illegal attempt to get property 'users' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'users' of bean class [com.example.UserForm]: Could not instantiate property type [com.example.UserEntity] to auto-grow nested property path: java.lang.InstantiationException: com.example.UserEntity`

`description The server encountered an internal error that prevented it from fulfilling this request.`

`exception`

`org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'users[0]' of bean class [com.example.UserForm]: Illegal attempt to get property 'users' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'users' of bean class [com.example.UserForm]: Could not instantiate property type [com.example.UserEntity] to auto-grow nested property path: java.lang.InstantiationException: com.example.UserEntity`

`org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:927)

org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:822)

javax.servlet.http.HttpServlet.service(HttpServlet.java:647)

org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)

javax.servlet.http.HttpServlet.service(HttpServlet.java:728)`

`root cause`

`org.springframework.beans.InvalidPropertyException: Invalid property 'users[0]' of bean class [com.example.UserForm]: Illegal attempt to get property 'users' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'users' of bean class [com.example.UserForm]: Could not instantiate property type [com.example.UserEntity] to auto-grow nested property path: java.lang.InstantiationException: com.example.UserEntity

org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:829)

org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:556)

org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:533)

org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:894)

org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75)

org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:699)

org.springframework.validation.DataBinder.doBind(DataBinder.java:595)

org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:191)

org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:112)

org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.bindRequestParameters(ServletModelAttributeMethodProcessor.java:153)

org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:106)

org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77)

org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162)

org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:123)

org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:746)

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687)

org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)

org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)

org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)

org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:822)

javax.servlet.http.HttpServlet.service(HttpServlet.java:647)

org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)

javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

`

非常感谢您的帮助

谢谢

回答:

问题实际上是UserEntity没有默认的构造函数,如果添加该构造函数,它将可以正常工作:

public UserEntity(){

//

}

以上是 提交表单时的Spring绑定异常 的全部内容, 来源链接: utcz.com/qa/428878.html

回到顶部