Yes Micheal you've got it.  

Let me warn you though.  In the scenario 
I was giving you there was a level of nesting that you don't have.  If you ever come 
across the scenario where you need to have

foo.something[0].property 

You will find that putting 

logic:iterate id="foo.something"

will give you an error on the parsing of ID which was my problem. And you will have to 
follow the syntax I have given you earlier.  Just a 
Heads up. 

Good Luck in the future.

b-


 --- On Fri 12/13, Michael Olszynski  wrote:From: Michael Olszynski [mailto: 
[EMAIL PROTECTED]]To: [EMAIL PROTECTED], [EMAIL PROTECTED]: Fri, 
13 Dec 2002 10:37:41 +0100Subject: Re: Struggling with indexed/repeating input 
fieldsHi Brian,I didn�t really get everything what u wrote. (It�s a problem of my 
badenglish, I guess). But I made myself some thoughts about what u worte about"id".And 
finally I got my error why I only could read from my formbean but notsubmit any 
changes in the bean. The error was the "id" (I guess).OK I try to explain (correct me 
if I�m wrong).I have a formbean which looks like this:public class TimeProofFormBean 
extends ActionForm {    public Vector getTimeProofList() {        return 
this.timeProofList;    }    public void setTimeProofList( Vector v ) {        
this.timeProofList = v;    }       private Vector timeProofList = new 
Vector();}******************************************************In my set and get 
TimeProofList-Vector I save following bean:public class TimeProofTableBean implements 
Serializable {public TimeProofTableBean(){}public String getFromHour(){        return 
FromHour;    }public void setFromHour(String FromHour){        this.FromHour = 
FromHour;    }private String 
FromHour;}**************************************************************************+In
 my jsp I had following iterate Tag:property="timeProofList">       indexed="true"/> 
So, I declare an "element" which comes from my timeProofForm with the 
methodgetTimeProofList. (This returnes a vector of TimeProofTableBeans)So in the 
html:text struts goes to element.getfromHour and gets the value ofthis fromHour 
Property in the TimeProofTableBean.But I never could press submit to get the changes 
fromHour�sNow I tried to give id the name of the get/set method of timeProofForm. 
Andnow I could read my data back! It�s working. Here�s my 
change:property="timeProofList">       maxlength="2" indexed="true"/>  Somehow I 
didn�t understand really why it�s not working with any name on id(because this bean 
scope is only valid in the actual jsp pagem isn�t it?)But if u take a look on the 
generated html inputvalue="11">It�s somehow logic, that it must work like this. 
Because the timeProofListis the name of the get/set Method of the Formbean. So I want 
to have theelement [0] ind this returned vedtor array. And from the element 0 I want 
toget/set the fromHour property.I hope this also helps somebody.Take care 
Michael--Fehlerfreie Software wirkt weniger komplex und diskreditiert damit 
denEntwickler!----- Original Message -----From: "Brian DeLuca" To: Sent: Thursday, 
December 12, 2002 11:53 PMSubject: RE: Struggling with indexed/repeating input fields> 
Michael,>> Please Let me know if something doesn't make sense. I have included mynotes 
in a text file in case the formatting gets nasty.>> Enjoy> b->> I too have been 
struggling with the same type of scenario.  I have> figured out a solution and 
reasoned the problem so here goes. Please bearwith me. I hope others will benefit or 
invalidate my solution.>> Setting up a logic iterate tag for this requires attributes> 
1 name --> In our case the name of the form> 2 property --> the item that is an 
ArrayList, [], or map etc...> 3 id --> This is going to be the key for the item that 
is set in a>          request attribute.>> Recommend using type attribute as well.>> 
Our html input tag lets say in this a text tag requires> name --> the bean whose 
member we want to populate> property --> the member to store the data.> indexed --> 
Set to TRUE since we are iterating.  This value is going>            to be the index 
value of the converted MAP, ArrayList Etc.>> Now lets create an example>> Item is a 
class that only contains a string with appropriate get/set> String item;>> FooBean has 
a member> Item [] fooBar;>> Our form FooForm has a member of type FooBean.> FooBean 
myInputRange;>> When one wants to create a JSP that uses FooForm and we need to ask> 
the users for values for myInputRange.  To make it work will look like> this in the 
JSP.>>> /* This seems ok right?  Why do we need Class Item ? Why not a straightString 
[] you ask.  Good question it is answered in how you need to set upthe subsequent 
Html:text tag */>> Text tag:> " />>> This seems to be extreme.  I agree but it works.  
Let's go through why allthis madness.>> Most doc says that while iterating make 
name=(Iterate id).  That is finein bean write but not here.  Html:text and other use 
BaseTagField which willstart writing you> Well that is just not good in the request 
process the method populatebeanhas no concept of anItem, It is not defined in the form 
so it won't populateit, in fact you will never know it is not a hard error, the 
processor justkeeps going and forgets it.>> The next interesting piece here is the 
fact that you need some wrapperclass for String []. Why?  Simple when you hear it, 
There is *NO*getter/Setter for a String.  Make Sense?  And you need the 
propertyattribute in HTML:TEXT tag (TLD Rule -- REQUIRED) I tried> tricking it by 
using property="" That doesn't help. because the resultinghtml will look like this.>> 
NOTICE:  the "." after the index -- Throws off the populate bean processalso with no 
hard errors.>> Finally Why do we have to use scriptlet for the value?> This is a pain 
in the butt, but here goes.> The HTML:Text tag will figure out what the value is if it 
is not present,but in our case it doesn't work.  Since our name"fooBean.fooBar" is not 
inthe PageContext and if value is null it makes a call toRequestUtils.lookup( param's 
) which ultimately makes a call tofindAttribute(name) which returns null and throws a 
JSP exception.  Howeverif you use the id from the logic:iterate it will find the 
context and work,but alas it will not populate your form.  So to work around this we 
add avalue attribute.  This prevents the lookup unfortnately we cannot see whatthe 
true value is> without using scriplet   Why do we have yo use sciptlet -- Beacause 
thetag will not try an evaluate the value of the value tag so it must be donebefore 
hand with scriptlet.>> Please let me know if there is some flaw in my process because 
I don'tlike the solution seems messy since I have to create wrapper classes of 
allString items that I normally would put in an array.>>> regards> Brian DeLuca> 
[EMAIL PROTECTED]>>>>>>  --- On Thu 12/12, Michael Olszynski  wrote:From: Michael 
Olszynski[mailto: [EMAIL PROTECTED]]To: [EMAIL PROTECTED]: Thu,12 
Dec 2002 17:57:42 +0100Subject: Struggling with indexed/repeating inputfieldsI saw a 
post in the 
threadhttp://www.mail-archive.com/[email protected]/msg49234.htmlIhave 
the same problem and I can�t get it working. Perhaps someone can helpme? It�d be very 
nice.I have the problems that the data in my formbean isn�tupdated. I mean, I get the 
data form my formbean in the jsp page. But when Iedit it and press submit, it is not 
updated. I get the same data as I gotbefore.Do you see perhaps an error? (I reviewed 
it now 7 hours with thesample source attached in the upper thread, and I can�t find 
any error.Thank you)It�s kind of urgent, because my thesis should be finished at 
theend of december. Thanks!!!!Take 
careMichael**************************************************************************************************************This
 is my projekterfassung.jsp::        
:**************************************************************************************************************My
 struts-config.xml:          "-//ApacheSoftware Foundation//DTD Struts Configuration 
1.0//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd";>name="timeProofForm"
   
type="de.proway.zerf.web.bean.TimeProofFormBean"/>type="de.proway.zerf.web.controller.ShowTimeProofAction"name="timeProofForm"
                     
scope="request"input="/projekterfassung.jsp">type="de.proway.zerf.web.controller.SaveTimeProofAction"name="timeProofForm"
                     
scope="request"input="/projekterfassung.jsp">type="org.apache.struts.actions.AddFormBeanAction"/>type="org.apache.struts.actions.AddForwardAction"/>type="org.apache.struts.actions.AddMappingAction"/>type="org.apache.struts.actions.ReloadAction"/>type="org.apache.struts.actions.RemoveFormBeanAction"/>type="org.apache.struts.actions.RemoveForwardAction"/>type="org.apache.struts.actions.RemoveMappingAction"/>**************************************************************************************************************SaveTimeProofAction.javapackagede.proway.zerf.web.controller;import
 javax.servlet.http.*;importorg.apache.struts.action.*;import 
de.proway.zerf.web.bean.*;importde.proway.zerf.app.controller.*;import 
de.proway.zerf.web.util.*;importde.proway.zerf.app.bean.*;import java.util.*;import 
java.text.*;public finalclass SaveTimeProofAction extends LoginCheckAction {    public 
ActionForwardperform( ActionMapping mapping,    ActionForm form, 
HttpServletRequestrequest,    HttpServletResponse res ) {        TimeProofFormBean tpf 
=(TimeProofFormBean) form;        
System.out.println(tpf.toString());System.out.println(tpf.getVector().toString());     
   for( int i=0; iSystem.out.println( 
((TimeProofTableBean)pf.getVector().get(i)).getDate()  );          
System.out.println(((TimeProofTableBean) tpf.getVector().get(i)).getFromHour()  
);System.out.println( ((TimeProofTableBean)tpf.getVector().get(i)).getFromMinute()  ); 
       }        returnmapping.findForward(ne" );    
}}**************************************************************************************************************ShowTimeProofAction.javapackage
 de.proway.zerf.web.controller;importjavax.servlet.http.*;import 
org.apache.struts.action.*;importde.proway.zerf.web.bean.*;import 
de.proway.zerf.app.controller.*;importde.proway.zerf.web.util.*;import 
de.proway.zerf.app.bean.*;importjava.util.*;import java.text.*;public final class 
ShowTimeProofActionextends LoginCheckAction {     public ActionForward perform( 
ActionMappingmapping,    ActionForm form, HttpServletRequest 
request,HttpServletResponse res ) {        Vector newCollection = new 
Vector();TimeProofFormBean tpfb = ( TimeProofFormBean )form;TimeProofTableBean tptb1 = 
new TimeProofTableBean();TimeProofTableBean tptb2 = new 
TimeProofTableBean();tptb1.setFromMinute(3);        
tptb2.setFromMinute(4);newCollection.add(tptb1);        
newCollection.add(tptb2);tpfb.setVector(newCollection);        return 
mapping.findForward(ne" );    
}}**************************************************************************************************************TimeProofFormBean.javapackagede.proway.zerf.web.bean;import
 java.util.*;importorg.apache.struts.action.*;public class TimeProofFormBean extends 
ActionForm{    public TimeProofFormBean() {    }    public Vector getVector(){        
return this.vector;    }    public void setVector( Vector v ){        this.vector = v; 
   }    public int getEmployeeID() { returnemployeeID; }    public void setEmployeeID( 
int employeeID ) {this.employeeID = employeeID; }    public int getProjectID() { 
returnprojectID; }    public void setProjectID( int projectID ) { this.projectID 
=projectID; }    private int employeeID;    private int projectID;    privateVector 
vector = 
newVector();}**************************************************************************************************************TimeProofTableBean.javapackagede.proway.zerf.web.bean;import
 java.util.*;importjava.io.Serializable;public class TimeProofTableBean implements 
Serializable{public TimeProofTableBean(){}public String getFromHour(){        
returnFromHour;    }public void setFromHour(String FromHour){        this.FromHour= 
FromHour;    }public String getToHour(){        return ToHour;    }publicvoid 
setToHour(String ToHour){        this.ToHour = ToHour;    }publicString 
getFromMinute(){        return FromMinute;    }public voidsetFromMinute(String 
FromMinute){        this.FromMinute =mMinute;    }public String getToMinute(){        
return ToMinute;    }publicvoid setToMinute(String ToMinute){        this.ToMinute 
=inute;    }public String getDate(){        return Date;    }public voidsetDate(String 
Date){        this.Date = Date;    }private StringFromHour;private String 
ToHour;private String FromMinute;private StringToMinute;private String 
Date;}--Fehlerfreie Software wirkt weniger komplexund diskreditiert damit den 
Entwickler!>> _______________________________________________> Can a Web portal 
forever change your life?> Win up to $25 Million on iWon - click 
here!>-------------------------------------------------------------------------------->
 --> To unsubscribe, e-mail:> For additional commands, e-mail:--To unsubscribe, 
e-mail:   For additional commands, e-mail: 

_______________________________________________
Can a Web portal forever change your life?
Win up to $25 Million on iWon - click here!

Reply via email to