m_kehle
Sep 7th, 2004, 06:05 AM
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:
org.springframework.beans.NotReadablePropertyExcep tion: Invalid property 'account.address.command' of bean class [webapp.model.account.Address]: Property 'account.address.command' is not readable
at org.springframework.beans.BeanWrapperImpl.getPrope rtyValue(BeanWrapperImpl.java:503)
at org.springframework.beans.BeanWrapperImpl.getNeste dBeanWrapper(BeanWrapperImpl.java:423)
at org.springframework.beans.BeanWrapperImpl.getBeanW rapperForPropertyPath(BeanWrapperImpl.java:401)
at org.springframework.beans.BeanWrapperImpl.getBeanW rapperForPropertyPath(BeanWrapperImpl.java:402)
at org.springframework.beans.BeanWrapperImpl.getBeanW rapperForPropertyPath(BeanWrapperImpl.java:402)
at org.springframework.beans.BeanWrapperImpl.getPrope rtyValue(BeanWrapperImpl.java:495)
at org.springframework.validation.BindException.getFi eldValue(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.doSta rtTagInternal(BindTag.java:105)
at org.springframework.web.servlet.tags.RequestContex tAwareTag.doStartTag(RequestContextAwareTag.java:7 0)
at org.apache.jsp.WEB_002dINF.jsp.pages.signon_jsp._j spService(signon_jsp.java:319)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
The jsp code (snippet):
...
<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>
....
address.jsp:
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>
The path (property) for the command Address is 'command.account.address', but the exception says the property is 'account.address.command'.
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
after I had upgraded my webapp from Spring 1.1 RC1 to 1.1 final, I got the following exception when displaying a jsp:
org.springframework.beans.NotReadablePropertyExcep tion: Invalid property 'account.address.command' of bean class [webapp.model.account.Address]: Property 'account.address.command' is not readable
at org.springframework.beans.BeanWrapperImpl.getPrope rtyValue(BeanWrapperImpl.java:503)
at org.springframework.beans.BeanWrapperImpl.getNeste dBeanWrapper(BeanWrapperImpl.java:423)
at org.springframework.beans.BeanWrapperImpl.getBeanW rapperForPropertyPath(BeanWrapperImpl.java:401)
at org.springframework.beans.BeanWrapperImpl.getBeanW rapperForPropertyPath(BeanWrapperImpl.java:402)
at org.springframework.beans.BeanWrapperImpl.getBeanW rapperForPropertyPath(BeanWrapperImpl.java:402)
at org.springframework.beans.BeanWrapperImpl.getPrope rtyValue(BeanWrapperImpl.java:495)
at org.springframework.validation.BindException.getFi eldValue(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.doSta rtTagInternal(BindTag.java:105)
at org.springframework.web.servlet.tags.RequestContex tAwareTag.doStartTag(RequestContextAwareTag.java:7 0)
at org.apache.jsp.WEB_002dINF.jsp.pages.signon_jsp._j spService(signon_jsp.java:319)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
The jsp code (snippet):
...
<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>
....
address.jsp:
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>
The path (property) for the command Address is 'command.account.address', but the exception says the property is 'account.address.command'.
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