Java 使用Spring MVC绑定基本包装类型的属性
在我看来,SpringMVC无法绑定基本包装类型的属性(例如整数、布尔值等)。当它试图绑定这些属性时,会抛出以下异常Java 使用Spring MVC绑定基本包装类型的属性,java,spring,spring-mvc,Java,Spring,Spring Mvc,在我看来,SpringMVC无法绑定基本包装类型的属性(例如整数、布尔值等)。当它试图绑定这些属性时,会抛出以下异常 javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: org.springframework.beans.NotReadablePropertyException: Invalid property 'assigned' of bean cla
javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: org.springframework.beans.NotReadablePropertyException: Invalid property 'assigned' of bean class [model.domain.Employee]: Bean property 'assigned' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.WEB_002dINF.jsp.configuration.form.defaultForm_jsp._jspService(defaultForm_jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.tiles.web.startup.TilesFilter.doFilter(TilesFilter.java:75)
当我将'assigned'属性(getter、setter和instance变量)的类型从Boolean更改为Boolean时,它就工作得很好
有人能确认SpringMVC不能绑定原始包装类型的属性吗?如果有,是否有解决办法?我无法将属性类型更改为boolean,因为此属性中的null值对我的应用程序有意义
谢谢。解决方法是创建/注册您自己的属性编辑器
另一个解决方法是添加第二个setter,它允许您将属性设置为“boolean”。(你可能需要摆弄你的API来颠覆Spring“有用”的坚持,即getter和setter类型参数/结果类型匹配。如果我在做这种事情,我通常会为同一逻辑属性使用两个不同名称的setter。)Spring MVC可以很好地处理
Boolean
如果Boolean
的getter名为isAssigned()
,则可能会出现此错误。根据,只有boolean
可以有这种形式的getter名称,boolean
应该有getAssigned()