indexing in tag 'iterate'

2001-06-29 Thread guido . roth

Hi

I need a form representing a two-dimensional array of input fields.

Can anybody tell me what the appropriate solution in Struts 1.0 looks like?

Despite numerous attempts to solve this with Struts, I did not succeed. My
attempted solution (in fact, one of them) looks like that
('account', 'amount' and 'remark' are indexed properties of the Bean
represented by 'report'):

...
table
tr
thAccount/ththAmount/ththRemark/th
/tr
bean:define id=report type=ReportForm toScope=session  name=select
property=report scope=session/
html:form name=report type=ReportForm scope=session action=log.do
logic:iterate name=report property=entries id=entry indexId
=entryId
tr
tdhtml:text name=report property=account[entryId]//td
tdhtml:text name=report property=amount[entryId]//td
tdhtml:text name=report property=remark[entryId]//td
/tr
/logic:iterate
trtd colspan=3center
html:submit
  bean:message key=button.submit/
/html:submit
/td/tr
/html:form
/table

This causes the exception:

java.lang.IllegalArgumentException: Invalid indexed property
'account[entryId]'
at
org.apache.struts.util.PropertyUtils.getIndexedProperty(PropertyUtils.java:308)
at
org.apache.struts.util.PropertyUtils.getNestedProperty(PropertyUtils.java,
Compiled Code)
at
org.apache.struts.util.PropertyUtils.getProperty(PropertyUtils.java:453)
at
org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:503)
at
org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:188)
at _0002freport_0002ejspreport_jsp_38._jspService
(_0002freport_0002ejspreport_jsp_38.java, Compiled Code)
at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java,
Compiled Code)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
at org.apache.tomcat.core.Handler.service(Handler.java:286)
at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:194)
at
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.java:1758)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1595)
at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
at org.apache.tomcat.core.Handler.service(Handler.java:286)
at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
at
org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:166)
at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java,
Compiled Code)
at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java,
Compiled Code)
at java.lang.Thread.run(Thread.java:479)

If I replace the index variable 'entryId' by a literal number (see below),
this works so far (though it is not 'meaningful', ); thus the environment
(beans etc.) seems to be OK.
...
table
tr
thAccount/ththAmount/ththRemark/th
/tr
bean:define id=report type=ReportForm toScope=session  name=select
property=report scope=session/
html:form name=report type=ReportForm scope=session action=log.do
logic:iterate name=report property=entries id=entry indexId
=entryId
tr
tdhtml:text name=report property=account[2]//td
tdhtml:text name=report property=amount[2]//td
tdhtml:text name=report property=remark[2]//td
/tr
/logic:iterate
trtd colspan=3center
html:submit
  bean:message key=button.submit/
/html:submit
/td/tr
/html:form
/table

I suppose there must be a solution in Struts for this standard problem. How
does it look like?

Thanks if you can bring me on the right track.

Guido





Re: indexing in tag 'iterate'

2001-06-29 Thread Becky Moyer

This is mostly a guess, but in the iterate tag's description, it states that 
the indexID must be a pagescope bean.  I think you must do something like:
%
int entryId=0;
pageContext.setAttribute(entryId, entryId, PageContext.PAGE_SCOPE);
%
And this will initialize an entryId int and place it into the page scope.
   Hope this helps...
   Becky

Original Message Follows
From: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: indexing in tag 'iterate'
Date: Fri, 29 Jun 2001 18:21:38 +0200

Hi

I need a form representing a two-dimensional array of input fields.

Can anybody tell me what the appropriate solution in Struts 1.0 looks like?

Despite numerous attempts to solve this with Struts, I did not succeed. My
attempted solution (in fact, one of them) looks like that
('account', 'amount' and 'remark' are indexed properties of the Bean
represented by 'report'):

...
table
tr
thAccount/ththAmount/ththRemark/th
/tr
bean:define id=report type=ReportForm toScope=session  name=select
property=report scope=session/
html:form name=report type=ReportForm scope=session action=log.do
logic:iterate name=report property=entries id=entry indexId
=entryId
tr
 tdhtml:text name=report property=account[entryId]//td
 tdhtml:text name=report property=amount[entryId]//td
 tdhtml:text name=report property=remark[entryId]//td
/tr
/logic:iterate
trtd colspan=3center
 html:submit
   bean:message key=button.submit/
 /html:submit
/td/tr
/html:form
/table

This causes the exception:

java.lang.IllegalArgumentException: Invalid indexed property
'account[entryId]'
 at
org.apache.struts.util.PropertyUtils.getIndexedProperty(PropertyUtils.java:308)
 at
org.apache.struts.util.PropertyUtils.getNestedProperty(PropertyUtils.java,
Compiled Code)
 at
org.apache.struts.util.PropertyUtils.getProperty(PropertyUtils.java:453)
 at
org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:503)
 at
org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:188)
 at _0002freport_0002ejspreport_jsp_38._jspService
(_0002freport_0002ejspreport_jsp_38.java, Compiled Code)
 at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)
 at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java,
Compiled Code)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:194)
 at
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.java:1758)
 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1595)
 at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
 at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:166)
 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java,
Compiled Code)
 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java,
Compiled Code)
 at java.lang.Thread.run(Thread.java:479)

If I replace the index variable 'entryId' by a literal number (see below),
this works so far (though it is not 'meaningful', ); thus the environment
(beans etc.) seems to be OK.
...
table
tr
thAccount/ththAmount/ththRemark/th
/tr
bean:define id=report type=ReportForm toScope=session  name=select
property=report scope=session/
html:form name=report type=ReportForm scope=session action=log.do
logic:iterate name=report property=entries id=entry indexId
=entryId
tr
 tdhtml:text name=report property=account[2]//td
 tdhtml:text name=report property=amount[2]//td
 tdhtml:text name=report property=remark[2]//td
/tr
/logic:iterate
trtd colspan=3center
 html:submit
   bean:message key=button.submit/
 /html:submit
/td/tr
/html:form
/table

I suppose

Re: indexing in tag 'iterate'

2001-06-29 Thread Becky Moyer

I got this completely working in a test, so if you need more help then to 
put entryId as an Integer equalling 0, let me know.  Oh, and if you couldn't 
figure this out, when you use it as an index, it will come out as an Integer 
value, and you'll need to say something like:
tdhtml:text name=report property=account[entryId.intValue()]//td

Becky


Original Message Follows
From: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: indexing in tag 'iterate'
Date: Fri, 29 Jun 2001 18:21:38 +0200

Hi

I need a form representing a two-dimensional array of input fields.

Can anybody tell me what the appropriate solution in Struts 1.0 looks like?

Despite numerous attempts to solve this with Struts, I did not succeed. My
attempted solution (in fact, one of them) looks like that
('account', 'amount' and 'remark' are indexed properties of the Bean
represented by 'report'):

...
table
tr
thAccount/ththAmount/ththRemark/th
/tr
bean:define id=report type=ReportForm toScope=session  name=select
property=report scope=session/
html:form name=report type=ReportForm scope=session action=log.do
logic:iterate name=report property=entries id=entry indexId
=entryId
tr
 tdhtml:text name=report property=account[entryId]//td
 tdhtml:text name=report property=amount[entryId]//td
 tdhtml:text name=report property=remark[entryId]//td
/tr
/logic:iterate
trtd colspan=3center
 html:submit
   bean:message key=button.submit/
 /html:submit
/td/tr
/html:form
/table

This causes the exception:

java.lang.IllegalArgumentException: Invalid indexed property
'account[entryId]'
 at
org.apache.struts.util.PropertyUtils.getIndexedProperty(PropertyUtils.java:308)
 at
org.apache.struts.util.PropertyUtils.getNestedProperty(PropertyUtils.java,
Compiled Code)
 at
org.apache.struts.util.PropertyUtils.getProperty(PropertyUtils.java:453)
 at
org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:503)
 at
org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:188)
 at _0002freport_0002ejspreport_jsp_38._jspService
(_0002freport_0002ejspreport_jsp_38.java, Compiled Code)
 at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177)
 at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java,
Compiled Code)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:194)
 at
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.java:1758)
 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1595)
 at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
 at org.apache.tomcat.core.Handler.service(Handler.java:286)
 at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
 at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:166)
 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java,
Compiled Code)
 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java,
Compiled Code)
 at java.lang.Thread.run(Thread.java:479)

If I replace the index variable 'entryId' by a literal number (see below),
this works so far (though it is not 'meaningful', ); thus the environment
(beans etc.) seems to be OK.
...
table
tr
thAccount/ththAmount/ththRemark/th
/tr
bean:define id=report type=ReportForm toScope=session  name=select
property=report scope=session/
html:form name=report type=ReportForm scope=session action=log.do
logic:iterate name=report property=entries id=entry indexId
=entryId
tr
 tdhtml:text name=report property=account[2]//td
 tdhtml:text name=report property=amount[2]//td
 tdhtml:text name=report property=remark[2]//td
/tr
/logic:iterate
trtd colspan=3center
 html:submit
   bean:message key=button.submit/
 /html:submit
/td/tr
/html:form
/table

I