You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Daniel Haynes <da...@rulefinancial.com> on 2002/08/19 19:31:39 UTC

upgrade 1.1-b1 to 1.1-b2 breaks indexed attribute under iterate ?

Hi All,

I've been attempting to upgrade a web app from jakarta-struts-1.1-b1 to
jakarta-struts-1.1-b2.zip and it appears to be breaking some code.

Specifically a piece of code 'Using the Indexed Attribute in the Scope of
the Iterate Tag' (as in 'Using Struts' by Maturo).

jsp:- 

<logic:iterate id="approvalList" collection="<%= approvals %>">
...
<td align=CENTER>
<html:submit indexed="true" property="cmd" value="Details"
styleClass="tableButton" titleKey="approvescreen.button.details"/>
</td>	

ActionForm: - 

private int index;
private String cmd;

public void setCmd(int index, String value) 
{
  	this.index = index;
  	cmd = value;
  }
  public String getCmd(int index) 
  {
  	return cmd;
  }
  public String getCmd() 
  {
  	return cmd;
  }
  public int getIndex()
  {
  	return index;
  }

When changing from jakarta-struts-1.1-b1 to jakarta-struts-1.1-b2 I get a
browser error:


java.lang.reflect.InvocationTargetException: Cannot set cmd
	at
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:922)
	at
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:726)
	at
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:978)
	at
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
ava:779)
	at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:246)
	at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
	at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:190)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
	at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:2
46)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
	at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
	at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:174)
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
	at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1012)
	at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107
)
	at java.lang.Thread.run(Thread.java:536)
Caused by: java.lang.NoSuchMethodException: Property 'cmd' has no setter
method
	at
org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
ava:1643)
	at
org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
ava:1545)
	at
org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:15
74)
	at
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:919)

By using the 'old' files (for 1.1-b1): struts.jar, commons-beanutils.jar and
commons-digester.jar (with all others from1.1-b2) I do not get an error and
the code works fine.

Does anyone know why this happens and what I need to do to fix the code to
work under 1.1b2 ?

many thanks



Dan


Daniel Haynes



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>