Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring MVC绑定基本包装类型的属性_Java_Spring_Spring Mvc - Fatal编程技术网

Java 使用Spring MVC绑定基本包装类型的属性

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

在我看来,SpringMVC无法绑定基本包装类型的属性(例如整数、布尔值等)。当它试图绑定这些属性时,会抛出以下异常

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()