You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Prakasan OK <ok...@rediffmail.com> on 2004/03/22 12:17:52 UTC

Indexed Property

Hi,

can anyone give me a sample code for implementing indexed properties?
how should the jsp page and the corresponding Action class look like?

thanks,
Prakasan

Re: Indexed Property

Posted by Mark Lowe <ma...@talk21.com>.
correction
On 22 Mar 2004, at 14:42, Mark Lowe wrote:

> I don't know how helpful those examples are in reality as there are a 
> few details missing..
>
> So here's an example.
>
> Personally i like nesting forms although this isn't to everyone's 
> taste. The example uses LazyList to allow you to scope the form to 
> request and the example was provided by Paul Chip on the list a few 
> weeks back.
>
> // action form
>
> import org.apache.struts.action.ActionMapping;
> import javax.servlet.http.*;
> import java.util.ArrayList;
> import java.util.List;
> import org.apache.struts.action.ActionForm;
> import org.apache.commons.collections.ListUtils;
> import org.apache.commons.collections.Factory;
>
> public class ItemsForm extends ActionForm {
> 	
> 	private List itemList;
>
> 	public ItemsForm() {
> 		initLists();
> 	}
> 	
>     private void initLists() {
>         Factory factory = new Factory() {
>             public Object create() {

		return new ItemForm();

>                 return new ProductForm();
>             }
>         };
>         this.itemList = ListUtils.lazyList(new ArrayList(), factory);
>     }
>
> 	public List getItems() {
> 		return itemList;
> 	}
>
> 	public void setItems(List itemList) {
> 		this.itemList = itemList;
> 	}
>
> 	public ItemForm getItem(int index) {
> 		return (ItemForm) itemList.get(index);
> 	}
> 	
> 	public void setItem(int index,ItemForm item) {
> 		this.itemList.add(index,item);
> 	}
>
>     public void reset(ActionMapping mapping,
>                       HttpServletRequest request) {
>         super.reset(mapping, request);
>         initLists();
>     }
> }
>
> //ItemForm
>
> public class ItemForm extends ActionForm {
> 	private String name;
>
> 	public String getName() {
> 		return name;
> 	}
>
> 	public void setName(String name) {
> 		this.name = name;
> 	}
> }
>
> //ItemsAction [i'd use LookupDispatchAction]
>
> ItemsForm theForm = (ItemsForm) form;
>
> ItemForm item = new ItemForm();
> item.setName("First Item");
>
> ItemForm anotherItem = new ItemForm();
> anotherItem.setName("Second Item");
>
> theForm.setItem(0,item);
> theForm.setItem(1,item);
>
> // struts config
>
> <form-bean name="itemsForm" type="ItemsForm" />
>
> <action path="/populate" name="itemsForm" scope="request" ...
>
> <action path="/save" name="itemsForm" scope="request"..
>
> //jsp
>
> <html:form path="/save.do">
> 	<logic:iterate id="item" name="itemsForm" property="items">
> 		<html:text name="item" property="item" indexed="true" />
>
> or
>
> 	<c:forEach var="item" items="${itemsForm.items}">
> 		<html:text name="item" property="item" indexed="true" />
>
> Sorry I didn't think about the potential confusing of using "item" 
> quite so much.. But this should help close a few gaps.
>
>
> On 22 Mar 2004, at 14:14, Robert Taylor wrote:
>
>> http://jakarta.apache.org/struts/faqs/indexedprops.html
>>
>>> -----Original Message-----
>>> From: Prakasan OK [mailto:ok_prakasan@rediffmail.com]
>>> Sent: Monday, March 22, 2004 6:18 AM
>>> To: Struts Users Mailing List
>>> Subject: Indexed Property
>>>
>>>
>>> Hi,
>>>
>>> can anyone give me a sample code for implementing indexed properties?
>>> how should the jsp page and the corresponding Action class look like?
>>>
>>> thanks,
>>> Prakasan
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: struts-user-help@jakarta.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: struts-user-help@jakarta.apache.org
>


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


Re: Indexed Property

Posted by Mark Lowe <ma...@talk21.com>.
I don't know how helpful those examples are in reality as there are a 
few details missing..

So here's an example.

Personally i like nesting forms although this isn't to everyone's 
taste. The example uses LazyList to allow you to scope the form to 
request and the example was provided by Paul Chip on the list a few 
weeks back.

// action form

import org.apache.struts.action.ActionMapping;
import javax.servlet.http.*;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts.action.ActionForm;
import org.apache.commons.collections.ListUtils;
import org.apache.commons.collections.Factory;

public class ItemsForm extends ActionForm {
	
	private List itemList;

	public ItemsForm() {
		initLists();
	}
	
     private void initLists() {
         Factory factory = new Factory() {
             public Object create() {
                 return new ProductForm();
             }
         };
         this.itemList = ListUtils.lazyList(new ArrayList(), factory);
     }

	public List getItems() {
		return itemList;
	}

	public void setItems(List itemList) {
		this.itemList = itemList;
	}

	public ItemForm getItem(int index) {
		return (ItemForm) itemList.get(index);
	}
	
	public void setItem(int index,ItemForm item) {
		this.itemList.add(index,item);
	}

     public void reset(ActionMapping mapping,
                       HttpServletRequest request) {
         super.reset(mapping, request);
         initLists();
     }
}

//ItemForm

public class ItemForm extends ActionForm {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

//ItemsAction [i'd use LookupDispatchAction]

ItemsForm theForm = (ItemsForm) form;

ItemForm item = new ItemForm();
item.setName("First Item");

ItemForm anotherItem = new ItemForm();
anotherItem.setName("Second Item");

theForm.setItem(0,item);
theForm.setItem(1,item);

// struts config

<form-bean name="itemsForm" type="ItemsForm" />

<action path="/populate" name="itemsForm" scope="request" ...

<action path="/save" name="itemsForm" scope="request"..

//jsp

<html:form path="/save.do">
	<logic:iterate id="item" name="itemsForm" property="items">
		<html:text name="item" property="item" indexed="true" />

or

	<c:forEach var="item" items="${itemsForm.items}">
		<html:text name="item" property="item" indexed="true" />

Sorry I didn't think about the potential confusing of using "item" 
quite so much.. But this should help close a few gaps.


On 22 Mar 2004, at 14:14, Robert Taylor wrote:

> http://jakarta.apache.org/struts/faqs/indexedprops.html
>
>> -----Original Message-----
>> From: Prakasan OK [mailto:ok_prakasan@rediffmail.com]
>> Sent: Monday, March 22, 2004 6:18 AM
>> To: Struts Users Mailing List
>> Subject: Indexed Property
>>
>>
>> Hi,
>>
>> can anyone give me a sample code for implementing indexed properties?
>> how should the jsp page and the corresponding Action class look like?
>>
>> thanks,
>> Prakasan
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: struts-user-help@jakarta.apache.org
>


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


RE: Indexed Property

Posted by Robert Taylor <rt...@mulework.com>.
http://jakarta.apache.org/struts/faqs/indexedprops.html

> -----Original Message-----
> From: Prakasan OK [mailto:ok_prakasan@rediffmail.com]
> Sent: Monday, March 22, 2004 6:18 AM
> To: Struts Users Mailing List
> Subject: Indexed Property
> 
> 
> Hi,
> 
> can anyone give me a sample code for implementing indexed properties?
> how should the jsp page and the corresponding Action class look like?
> 
> thanks,
> Prakasan

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