Hi,
after I had upgraded my webapp from Spring 1.1 RC1 to 1.1 final, I got the following exception when displaying a jsp:
The jsp code (snippet):Code:org.springframework.beans.NotReadablePropertyException: Invalid property 'account.address.command' of bean class [webapp.model.account.Address]: Property 'account.address.command' is not readable at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:503) at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:423) at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:401) at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:402) at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:402) at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:495) at org.springframework.validation.BindException.getFieldValue(BindException.java:295) at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:115) at org.springframework.web.servlet.tags.BindStatus.<init>(BindStatus.java:38) at org.springframework.web.servlet.tags.BindTag.doStartTagInternal(BindTag.java:105) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:70) at org.apache.jsp.WEB_002dINF.jsp.pages.signon_jsp._jspService(signon_jsp.java:319) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
address.jsp:Code:... <form method="post"> <%-- Address --%> <spring:nestedPath path="command.account.address"> <%@ include file="/WEB-INF/jsp/common/address.jsp" %> </spring:nestedPath> <%-- Account --%> <spring:nestedPath path="command.account"> <p>email:<spring:bind path="email"><input type="text" name="<c:out value="${status.expression}"/>"/></spring:bind></p> <p>username:<spring:bind path="username"><input type="text" name="<c:out value="${status.expression}"/>"/></spring:bind></p> <p>password:<spring:bind path="password"><input type="text" name="<c:out value="${status.expression}"/>"/></spring:bind></p> </spring:nestedPath> ....
The path (property) for the command Address is 'command.account.address', but the exception says the property is 'account.address.command'.Code:p>firstName:<spring:bind path="firstName"><input type="text" name="<c:out value="${status.expression}"/>" value="<c:out value="${status.value}"/>"/></spring:bind></p> <p>lastName:<spring:bind path="lastName"><input type="text" name="<c:out value="${status.expression}"/>" value="<c:out value="${status.value}"/>"/></spring:bind></p> <p>street:<spring:bind path="street"><input type="text" name="<c:out value="${status.expression}"/>" value="<c:out value="${status.value}"/>"</spring:bind></p> <p>zip:<spring:bind path="zip"><input type="text" name="<c:out value="${status.expression}"/>" value="<c:out value="${status.value}"/>"/></spring:bind></p> <p>city:<spring:bind path="city"><input type="text" name="<c:out value="${status.expression}"/>" value="<c:out value="${status.value}"/>"/></spring:bind></p>
Same code works fine with 1.1RC1.
Any ideas?
After debugging the BindTag class I'm figured out, that the nestedPath for the address object works fine. But the resolvedPath for the second nestedPath (in jsp 'commad.account') is 'command.account.address.command.account.email' (nestedPath in BindTag.doStartInternal is 'command.account.address.command.account').
thx,
markus


Reply With Quote