Caused by: org.springframework.beans.NotReadablePropertyException

異常詳情:

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(),同理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章