異常詳情:
Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'dayNew' of bean class [com.zttech.demo.cms.entity.CmsConfigAttr]: Bean property 'dayNew' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
at org.springframework.beans.AbstractNestablePropertyAccessor.getPropertyValue(AbstractNestablePropertyAccessor.java:619) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.beans.AbstractNestablePropertyAccessor.getPropertyValue(AbstractNestablePropertyAccessor.java:610) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:99) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:229) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:120) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80) ~[spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.apache.jsp.WEB_002dINF.views.demo.cms.global.otherHome_jsp._jspx_meth_form_005finput_005f0(otherHome_jsp.java:506) ~[?:?]
at org.apache.jsp.WEB_002dINF.views.demo.cms.global.otherHome_jsp._jspx_meth_form_005fform_005f0(otherHome_jsp.java:373) ~[?:?]
at org.apache.jsp.WEB_002dINF.views.demo.cms.global.otherHome_jsp._jspService(otherHome_jsp.java:165) ~[?:?]
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ~[jasper.jar:7.0.78]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) ~[servlet-api.jar:?]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) ~[jasper.jar:7.0.78]
... 84 more
原因:jsp中的<form:input/>
標籤中喲一個屬性path
,它裏面的字符串內容要和modelAttribute
中對應的類的getter和setter方法後面跟的屬性名稱一致。
拿這個錯誤舉例,
<form:form id="inputForm" modelAttribute="cmsConfigAttr" action="${ctx}/cms/global/otherEdit.jhtml" method="post" class="form-horizontal">
在<form:form/>
標籤的modelAttribute
中我設置了cmsConfigAttr
。這是一個CmsConfigAttr
類的對象,它裏面有個DAYNEW屬性。
public static final String DAYNEW = "day";
這是一個static final 的字符串,按照標準來說是要全部大寫的。於是在自動生成getter和setter方法的時候就會變成getDaynew()
和setDaynew
.
所以在<form:input path="daynew"/>
使用的時候,path裏面就不能寫dayNew,而是要寫daynew。就是用getXxxxx(),再把第一個字母小寫。
boolean類型的isXxxx(),同理。