You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by thanuja <th...@yahoo.com> on 2009/04/14 03:34:20 UTC

Multiple Logic iterate tags and setting indexed properties

Hi,

I am using one logic iterate tag inside another. The data set at the inner
loop should update form bean. Following explains what i tried to do. This
way the data displays as I expected. But when I select the check box it
won't update the corresponding 'Book' object. (The form has list of
'BookList' objects. Each BookList object has set of Book objects. I wanted
to mark Book as selected.)

class BookList
	ArrayList<Book> books

class Book
	String name
	boolean selected

class BookInfoForm extends ActionForm{
	ArrayList<BookList> bookLists;
	
	public BookList getBookl(int index){
		return bookLists.get(index);
	}
	public void setBookl(int index,BookList element){
		bookLists.set(index, element);
	}
	public Book getBook(int index){
		
		return bookLists.get(?).getBooks().get(index);
	}
	public void setBook(int index,Book element){
		
		bookLists.get(?).getBooks().set(index,element);
	}

	
}

<logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
indexId="i">

<logic:iterate id="book" name="bookl" property="books" indexId="j">
<html:checkbox name="book" property="selected" indexed="true" value="true"
/>
<bean:write name="book" property="name" />

</logic:iterate>

</logic:iterate>

Thanks in advance,
Thanuja


-- 
View this message in context: http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23031690.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Multiple Logic iterate tags and setting indexed properties

Posted by thanuja <th...@yahoo.com>.
Yes, It worked. Thank you so much Nikhil.


Nikhil Walvekar wrote:
> 
> Hi Thanuja,
> 
> Can you please try using input tag (if its allowed)?
> 
> *<logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
> indexId="i">
> 
> <logic:iterate id="book" name="bookl" property="books" indexId="j">
> 
> <input type="checkbox" name="bookLists[<%= i %>].books[<%= j %>].selected"
> value="true">
> 
> <bean:write name="book" property="name" />
> 
> </logic:iterate>
> 
> </logic:iterate>
> *
> I will suggest you first try it with fixed size list (both), so you can
> initialize list in form bean.
> 
> Regards,
> Nikhil
> 
> On Wed, Apr 15, 2009 at 5:07 AM, thanuja <th...@yahoo.com>
> wrote:
> 
>>
>> Hi Nikhil,
>>
>> Thanks for the suggestion. I tried, but it is still not working. I am
>> using
>> struts tags and instead of <input>.
>> If my class structure was like the below one, then the values will be
>> updated without any problem when the form submitted. The problem comes
>> when
>> I have two logic iterates(as shown in my earlier post).
>>
>> class BookList
>>        String bookListName
>>        boolean selected
>>
>> class BookInfoForm extends ActionForm{
>>        ArrayList<BookList> bookLists;
>>
>>        public BookList getBookl(int index){
>>                return bookLists.get(index);
>>        }
>>        public void setBookl(int index,BookList element){
>>                bookLists.set(index, element);
>>        }
>>
>> }
>>
>> <logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
>> indexId="i">
>>
>> <html:checkbox name="bookl" property="selected" indexed="true"
>> value="true"
>> />
>> <bean:write name="bookl" property="bookListName" />
>>
>> </logic:iterate>
>>
>>
>> Thanks,
>> Thanuja
>>
>>
>>
>> Nikhil Walvekar wrote:
>> >
>> > Hi Thanuja,
>> >
>> > Your checkbox tag should be rendered as
>> > <input type="checkbox" name="bookLists[i].books[j].selected"
>> value="true">
>> >
>> > I don't think logic:iterate supports property as "indexed".
>> > Probably you can create above tag using values you have.
>> >
>> > "bookLists[i].books[j].selected" will be converted as
>> > "getBookList().get(i).getBooks().get(j).setSelected(value)" you will
>> have
>> > to
>> > make sure that none of the getters return null object.
>> >
>> > Regards,
>> > Nikhil
>> > On Tue, Apr 14, 2009 at 7:04 AM, thanuja <th...@yahoo.com>
>> > wrote:
>> >
>> >>
>> >> Hi,
>> >>
>> >> I am using one logic iterate tag inside another. The data set at the
>> >> inner
>> >> loop should update form bean. Following explains what i tried to do.
>> This
>> >> way the data displays as I expected. But when I select the check box
>> it
>> >> won't update the corresponding 'Book' object. (The form has list of
>> >> 'BookList' objects. Each BookList object has set of Book objects. I
>> >> wanted
>> >> to mark Book as selected.)
>> >>
>> >> class BookList
>> >>        ArrayList<Book> books
>> >>
>> >> class Book
>> >>        String name
>> >>        boolean selected
>> >>
>> >> class BookInfoForm extends ActionForm{
>> >>        ArrayList<BookList> bookLists;
>> >>
>> >>        public BookList getBookl(int index){
>> >>                return bookLists.get(index);
>> >>        }
>> >>        public void setBookl(int index,BookList element){
>> >>                bookLists.set(index, element);
>> >>        }
>> >>        public Book getBook(int index){
>> >>
>> >>                return bookLists.get(?).getBooks().get(index);
>> >>        }
>> >>        public void setBook(int index,Book element){
>> >>
>> >>                bookLists.get(?).getBooks().set(index,element);
>> >>        }
>> >>
>> >>
>> >> }
>> >>
>> >> <logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
>> >> indexId="i">
>> >>
>> >> <logic:iterate id="book" name="bookl" property="books" indexId="j">
>> >> <html:checkbox name="book" property="selected" indexed="true"
>> >> value="true"
>> >> />
>> >> <bean:write name="book" property="name" />
>> >>
>> >> </logic:iterate>
>> >>
>> >> </logic:iterate>
>> >>
>> >> Thanks in advance,
>> >> Thanuja
>> >>
>> >>
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23031690.html
>> >> Sent from the Struts - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> >> For additional commands, e-mail: user-help@struts.apache.org
>> >>
>> >>
>> >
>> >
>> > --
>> > Nikhil
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23050006.html
>> Sent from the Struts - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
> 
> 
> -- 
> Nikhil
> 
> 

-- 
View this message in context: http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23083353.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Multiple Logic iterate tags and setting indexed properties

Posted by Nikhil Walvekar <wa...@gmail.com>.
Hi Thanuja,

Can you please try using input tag (if its allowed)?

*<logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
indexId="i">

<logic:iterate id="book" name="bookl" property="books" indexId="j">

<input type="checkbox" name="bookLists[<%= i %>].books[<%= j %>].selected"
value="true">

<bean:write name="book" property="name" />

</logic:iterate>

</logic:iterate>
*
I will suggest you first try it with fixed size list (both), so you can
initialize list in form bean.

Regards,
Nikhil

On Wed, Apr 15, 2009 at 5:07 AM, thanuja <th...@yahoo.com> wrote:

>
> Hi Nikhil,
>
> Thanks for the suggestion. I tried, but it is still not working. I am using
> struts tags and instead of <input>.
> If my class structure was like the below one, then the values will be
> updated without any problem when the form submitted. The problem comes when
> I have two logic iterates(as shown in my earlier post).
>
> class BookList
>        String bookListName
>        boolean selected
>
> class BookInfoForm extends ActionForm{
>        ArrayList<BookList> bookLists;
>
>        public BookList getBookl(int index){
>                return bookLists.get(index);
>        }
>        public void setBookl(int index,BookList element){
>                bookLists.set(index, element);
>        }
>
> }
>
> <logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
> indexId="i">
>
> <html:checkbox name="bookl" property="selected" indexed="true" value="true"
> />
> <bean:write name="bookl" property="bookListName" />
>
> </logic:iterate>
>
>
> Thanks,
> Thanuja
>
>
>
> Nikhil Walvekar wrote:
> >
> > Hi Thanuja,
> >
> > Your checkbox tag should be rendered as
> > <input type="checkbox" name="bookLists[i].books[j].selected"
> value="true">
> >
> > I don't think logic:iterate supports property as "indexed".
> > Probably you can create above tag using values you have.
> >
> > "bookLists[i].books[j].selected" will be converted as
> > "getBookList().get(i).getBooks().get(j).setSelected(value)" you will have
> > to
> > make sure that none of the getters return null object.
> >
> > Regards,
> > Nikhil
> > On Tue, Apr 14, 2009 at 7:04 AM, thanuja <th...@yahoo.com>
> > wrote:
> >
> >>
> >> Hi,
> >>
> >> I am using one logic iterate tag inside another. The data set at the
> >> inner
> >> loop should update form bean. Following explains what i tried to do.
> This
> >> way the data displays as I expected. But when I select the check box it
> >> won't update the corresponding 'Book' object. (The form has list of
> >> 'BookList' objects. Each BookList object has set of Book objects. I
> >> wanted
> >> to mark Book as selected.)
> >>
> >> class BookList
> >>        ArrayList<Book> books
> >>
> >> class Book
> >>        String name
> >>        boolean selected
> >>
> >> class BookInfoForm extends ActionForm{
> >>        ArrayList<BookList> bookLists;
> >>
> >>        public BookList getBookl(int index){
> >>                return bookLists.get(index);
> >>        }
> >>        public void setBookl(int index,BookList element){
> >>                bookLists.set(index, element);
> >>        }
> >>        public Book getBook(int index){
> >>
> >>                return bookLists.get(?).getBooks().get(index);
> >>        }
> >>        public void setBook(int index,Book element){
> >>
> >>                bookLists.get(?).getBooks().set(index,element);
> >>        }
> >>
> >>
> >> }
> >>
> >> <logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
> >> indexId="i">
> >>
> >> <logic:iterate id="book" name="bookl" property="books" indexId="j">
> >> <html:checkbox name="book" property="selected" indexed="true"
> >> value="true"
> >> />
> >> <bean:write name="book" property="name" />
> >>
> >> </logic:iterate>
> >>
> >> </logic:iterate>
> >>
> >> Thanks in advance,
> >> Thanuja
> >>
> >>
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23031690.html
> >> Sent from the Struts - User mailing list archive at Nabble.com.
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> >> For additional commands, e-mail: user-help@struts.apache.org
> >>
> >>
> >
> >
> > --
> > Nikhil
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23050006.html
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


-- 
Nikhil

Re: Multiple Logic iterate tags and setting indexed properties

Posted by thanuja <th...@yahoo.com>.
Hi Nikhil,

Thanks for the suggestion. I tried, but it is still not working. I am using
struts tags and instead of <input>.
If my class structure was like the below one, then the values will be
updated without any problem when the form submitted. The problem comes when
I have two logic iterates(as shown in my earlier post).

class BookList
	String bookListName
        boolean selected

class BookInfoForm extends ActionForm{
	ArrayList<BookList> bookLists;
	
	public BookList getBookl(int index){
		return bookLists.get(index);
	}
	public void setBookl(int index,BookList element){
		bookLists.set(index, element);
	}
	
}

<logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
indexId="i">

<html:checkbox name="bookl" property="selected" indexed="true" value="true"
/>
<bean:write name="bookl" property="bookListName" />

</logic:iterate>


Thanks,
Thanuja
Thanuja


Nikhil Walvekar wrote:
> 
> Hi Thanuja,
> 
> Your checkbox tag should be rendered as
> <input type="checkbox" name="bookLists[i].books[j].selected" value="true">
> 
> I don't think logic:iterate supports property as "indexed".
> Probably you can create above tag using values you have.
> 
> "bookLists[i].books[j].selected" will be converted as
> "getBookList().get(i).getBooks().get(j).setSelected(value)" you will have
> to
> make sure that none of the getters return null object.
> 
> Regards,
> Nikhil
> On Tue, Apr 14, 2009 at 7:04 AM, thanuja <th...@yahoo.com>
> wrote:
> 
>>
>> Hi,
>>
>> I am using one logic iterate tag inside another. The data set at the
>> inner
>> loop should update form bean. Following explains what i tried to do. This
>> way the data displays as I expected. But when I select the check box it
>> won't update the corresponding 'Book' object. (The form has list of
>> 'BookList' objects. Each BookList object has set of Book objects. I
>> wanted
>> to mark Book as selected.)
>>
>> class BookList
>>        ArrayList<Book> books
>>
>> class Book
>>        String name
>>        boolean selected
>>
>> class BookInfoForm extends ActionForm{
>>        ArrayList<BookList> bookLists;
>>
>>        public BookList getBookl(int index){
>>                return bookLists.get(index);
>>        }
>>        public void setBookl(int index,BookList element){
>>                bookLists.set(index, element);
>>        }
>>        public Book getBook(int index){
>>
>>                return bookLists.get(?).getBooks().get(index);
>>        }
>>        public void setBook(int index,Book element){
>>
>>                bookLists.get(?).getBooks().set(index,element);
>>        }
>>
>>
>> }
>>
>> <logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
>> indexId="i">
>>
>> <logic:iterate id="book" name="bookl" property="books" indexId="j">
>> <html:checkbox name="book" property="selected" indexed="true"
>> value="true"
>> />
>> <bean:write name="book" property="name" />
>>
>> </logic:iterate>
>>
>> </logic:iterate>
>>
>> Thanks in advance,
>> Thanuja
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23031690.html
>> Sent from the Struts - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
> 
> 
> -- 
> Nikhil
> 
> 

-- 
View this message in context: http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23050006.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Multiple Logic iterate tags and setting indexed properties

Posted by Nikhil Walvekar <wa...@gmail.com>.
Hi Thanuja,

Your checkbox tag should be rendered as
<input type="checkbox" name="bookLists[i].books[j].selected" value="true">

I don't think logic:iterate supports property as "indexed".
Probably you can create above tag using values you have.

"bookLists[i].books[j].selected" will be converted as
"getBookList().get(i).getBooks().get(j).setSelected(value)" you will have to
make sure that none of the getters return null object.

Regards,
Nikhil
On Tue, Apr 14, 2009 at 7:04 AM, thanuja <th...@yahoo.com> wrote:

>
> Hi,
>
> I am using one logic iterate tag inside another. The data set at the inner
> loop should update form bean. Following explains what i tried to do. This
> way the data displays as I expected. But when I select the check box it
> won't update the corresponding 'Book' object. (The form has list of
> 'BookList' objects. Each BookList object has set of Book objects. I wanted
> to mark Book as selected.)
>
> class BookList
>        ArrayList<Book> books
>
> class Book
>        String name
>        boolean selected
>
> class BookInfoForm extends ActionForm{
>        ArrayList<BookList> bookLists;
>
>        public BookList getBookl(int index){
>                return bookLists.get(index);
>        }
>        public void setBookl(int index,BookList element){
>                bookLists.set(index, element);
>        }
>        public Book getBook(int index){
>
>                return bookLists.get(?).getBooks().get(index);
>        }
>        public void setBook(int index,Book element){
>
>                bookLists.get(?).getBooks().set(index,element);
>        }
>
>
> }
>
> <logic:iterate name="bookInfoForm" id="bookl" property="bookLists"
> indexId="i">
>
> <logic:iterate id="book" name="bookl" property="books" indexId="j">
> <html:checkbox name="book" property="selected" indexed="true" value="true"
> />
> <bean:write name="book" property="name" />
>
> </logic:iterate>
>
> </logic:iterate>
>
> Thanks in advance,
> Thanuja
>
>
> --
> View this message in context:
> http://www.nabble.com/Multiple-Logic-iterate-tags-and-setting-indexed-properties-tp23031690p23031690.html
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


-- 
Nikhil