Re: Indexed Properties and Lazy List behaviour
Cool. I get it. Wow. Now that I get it, I really like it. It's like the dyna form bean finally caught up with the nested tags! Thanks, Niall. On Sat, 2 Oct 2004 00:50:14 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: OK I think I must be spreading confusion - thats what you get, arrays of beans, not strings. For LazyValidatorForm the default for an indexed property is an ArrayList of LazyDynaBean - and it populates the LazyDynaBean for you automatically. For LazyDynaBean the default indexed property is an ArrayList - but it doesn't populate it with anything. If however you create a custom LazyDynaBean (like the example I gave) changing the default indexed property to an LazyDynaBean array then the default indexed property is an Array of LazyDynaBean - populated automatically. Now you can have 1...n levels of indexed beans to your hearts content. Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] Subject: Re: Indexed Properties and Lazy List behaviour My understanding of the question on the user list was for a form which contained an array of beans, instead of just an array of strings. An example would be a form bean containing a list/array of children, each with a name, date of birth, daily allowance, etc. If each child is a dyna form, I can use FormDef for each element. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Indexed Properties and Lazy List behaviour
Your other solutions are awesome. I use the hand crank... one since I didn't know of the lazylist at the time. The code looks right. Thanks for posting the other lazy solutions, I'll try them in the future. Regards...djsuarez -Original Message- From: Niall Pemberton [mailto:[EMAIL PROTECTED] Sent: Thursday, September 30, 2004 6:18 PM To: Struts Users Mailing List Subject: Indexed Properties and Lazy List behaviour I've set up this wiki page showing how to use indexed properties and implement lazy list behaviour in an ActionForm. http://wiki.apache.org/struts/StrutsCatalogLazyList There are three possible solutions to lazy list beviour on that page - but since I'm only using LazyDynaBeans myself, I would appreciate if anyone using either the Commons Collections LazyList or hand cranked lazy lists would take a look to see if what I posted looks right. Niall - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Indexed Properties and Lazy List behaviour
In 2.3 of StrutsCatalogLazyList, it uses a Lazy*Form flavor to hold an indexed property. Can the indexed property itself an array or list of Lazy*Form objects? form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=org.apache.struts.validator.LazyValidatorForm/ /form-bean On Fri, 1 Oct 2004 00:17:40 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: I've set up this wiki page showing how to use indexed properties and implement lazy list behaviour in an ActionForm. http://wiki.apache.org/struts/StrutsCatalogLazyList There are three possible solutions to lazy list beviour on that page - but since I'm only using LazyDynaBeans myself, I would appreciate if anyone using either the Commons Collections LazyList or hand cranked lazy lists would take a look to see if what I posted looks right. Niall - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Indexed Properties and Lazy List behaviour
It could, although there is no need for it to be an ActionForm - could just be a LazyDynaBean. Having said that, you would probably want to override the default indexed type to be a LazyDynaBean array rather than ArrayList as LazyDynaBean doesn't populate Lists, but it does Arrays. public class CustomLazyBean extends LazyDynaBean { public CustomLazyBean() { super(); } protected Object defaultIndexedProperty(String name) { return new CustomLazyBean[0]; } } form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=myPackage.CustomLazyBean[]/ /form-bean Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] To: Struts Users Mailing List [EMAIL PROTECTED] Sent: Friday, October 01, 2004 8:07 PM Subject: Re: Indexed Properties and Lazy List behaviour In 2.3 of StrutsCatalogLazyList, it uses a Lazy*Form flavor to hold an indexed property. Can the indexed property itself an array or list of Lazy*Form objects? form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=org.apache.struts.validator.LazyValidatorForm/ /form-bean On Fri, 1 Oct 2004 00:17:40 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: I've set up this wiki page showing how to use indexed properties and implement lazy list behaviour in an ActionForm. http://wiki.apache.org/struts/StrutsCatalogLazyList There are three possible solutions to lazy list beviour on that page - but since I'm only using LazyDynaBeans myself, I would appreciate if anyone using either the Commons Collections LazyList or hand cranked lazy lists would take a look to see if what I posted looks right. Niall - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Indexed Properties and Lazy List behaviour
But if I need it to be a DynaActionForm subclass, then I'd just use LazyValidatorForm or its subclass, right? In which case, wouldn't I have to worry about it being properly initialized, as indicated in http://struts.apache.org/userGuide/building_controller.html#dyna_action_form_classes ? Someone asked about combining FormDef and LazyBeans to come up with a form containing indexed properties. FormDef works with DynaActionForms. If I have an array or list of dyna forms, I can use FormDef with each element. The problem is coming up with a lazy, non-session-scope implementation. I came up with the code snippet at https://formdef.dev.java.net/servlets/ReadMsg?list=usersmsgNo=12 because I assumed that in order to create a proper ActionForm, it needed to go through FormBeanConfig's createActionForm. Are lazy dyna forms exempt from this requirement? On Fri, 1 Oct 2004 21:14:25 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: It could, although there is no need for it to be an ActionForm - could just be a LazyDynaBean. Having said that, you would probably want to override the default indexed type to be a LazyDynaBean array rather than ArrayList as LazyDynaBean doesn't populate Lists, but it does Arrays. public class CustomLazyBean extends LazyDynaBean { public CustomLazyBean() { super(); } protected Object defaultIndexedProperty(String name) { return new CustomLazyBean[0]; } } form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=myPackage.CustomLazyBean[]/ /form-bean Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] To: Struts Users Mailing List [EMAIL PROTECTED] Sent: Friday, October 01, 2004 8:07 PM Subject: Re: Indexed Properties and Lazy List behaviour In 2.3 of StrutsCatalogLazyList, it uses a Lazy*Form flavor to hold an indexed property. Can the indexed property itself an array or list of Lazy*Form objects? form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=org.apache.struts.validator.LazyValidatorForm/ /form-bean On Fri, 1 Oct 2004 00:17:40 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: I've set up this wiki page showing how to use indexed properties and implement lazy list behaviour in an ActionForm. http://wiki.apache.org/struts/StrutsCatalogLazyList There are three possible solutions to lazy list beviour on that page - but since I'm only using LazyDynaBeans myself, I would appreciate if anyone using either the Commons Collections LazyList or hand cranked lazy lists would take a look to see if what I posted looks right. Niall - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Indexed Properties and Lazy List behaviour
I believe I understand the principle of FormDef - you're combining the form definition with the validation rules. So is that why you want to nest indexed ActionForms rather than any old type of DynaBean? Are you then calling the validate() method on each of the indexed ActionForms? You're right if you want a properly initialized lazy ActionForm then you need to go through the FormBeanConfig's createActionForm method. Having said that the default indexed property type of LazyDynaBean/LazyValdatorForm is an ArrayList - changing that to a LazyDynaBean[] as I showed in the CustomLazyBean means there is no need to then initialize that indexed property - its done automatically for arrays (CustomLazyBean would instantiate a new DynaBean and grows it accordingly). From reading the message on the FormDef user list, then just having a property which is a CustomLazyBean (rather than CustomLazyBean array) sounds like it would work for your user - then only thing then is I don't really understand how that then interacts with FormDef - hence my questions at the top. Sorry, should have got round to giving FormDef a go - but lifes busy :-( Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] To: Struts Users Mailing List [EMAIL PROTECTED] Sent: Friday, October 01, 2004 9:43 PM Subject: Re: Indexed Properties and Lazy List behaviour But if I need it to be a DynaActionForm subclass, then I'd just use LazyValidatorForm or its subclass, right? In which case, wouldn't I have to worry about it being properly initialized, as indicated in http://struts.apache.org/userGuide/building_controller.html#dyna_action_form_classes ? Someone asked about combining FormDef and LazyBeans to come up with a form containing indexed properties. FormDef works with DynaActionForms. If I have an array or list of dyna forms, I can use FormDef with each element. The problem is coming up with a lazy, non-session-scope implementation. I came up with the code snippet at https://formdef.dev.java.net/servlets/ReadMsg?list=usersmsgNo=12 because I assumed that in order to create a proper ActionForm, it needed to go through FormBeanConfig's createActionForm. Are lazy dyna forms exempt from this requirement? On Fri, 1 Oct 2004 21:14:25 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: It could, although there is no need for it to be an ActionForm - could just be a LazyDynaBean. Having said that, you would probably want to override the default indexed type to be a LazyDynaBean array rather than ArrayList as LazyDynaBean doesn't populate Lists, but it does Arrays. public class CustomLazyBean extends LazyDynaBean { public CustomLazyBean() { super(); } protected Object defaultIndexedProperty(String name) { return new CustomLazyBean[0]; } } form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=myPackage.CustomLazyBean[]/ /form-bean Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] To: Struts Users Mailing List [EMAIL PROTECTED] Sent: Friday, October 01, 2004 8:07 PM Subject: Re: Indexed Properties and Lazy List behaviour In 2.3 of StrutsCatalogLazyList, it uses a Lazy*Form flavor to hold an indexed property. Can the indexed property itself an array or list of Lazy*Form objects? form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=org.apache.struts.validator.LazyValidatorForm/ /form-bean On Fri, 1 Oct 2004 00:17:40 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: I've set up this wiki page showing how to use indexed properties and implement lazy list behaviour in an ActionForm. http://wiki.apache.org/struts/StrutsCatalogLazyList There are three possible solutions to lazy list beviour on that page - but since I'm only using LazyDynaBeans myself, I would appreciate if anyone using either the Commons Collections LazyList or hand cranked lazy lists would take a look to see if what I posted looks right. Niall - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED
Re: Indexed Properties and Lazy List behaviour
Aside from form field definition, which isn't needed for a lazy form bean, having a FormDef-backed form would take care of the formatting/parsing of the data, even i18n. The form definition validation config combo is actually just optional. My understanding of the question on the user list was for a form which contained an array of beans, instead of just an array of strings. An example would be a form bean containing a list/array of children, each with a name, date of birth, daily allowance, etc. If each child is a dyna form, I can use FormDef for each element. On Fri, 1 Oct 2004 22:35:15 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: I believe I understand the principle of FormDef - you're combining the form definition with the validation rules. So is that why you want to nest indexed ActionForms rather than any old type of DynaBean? Are you then calling the validate() method on each of the indexed ActionForms? You're right if you want a properly initialized lazy ActionForm then you need to go through the FormBeanConfig's createActionForm method. Having said that the default indexed property type of LazyDynaBean/LazyValdatorForm is an ArrayList - changing that to a LazyDynaBean[] as I showed in the CustomLazyBean means there is no need to then initialize that indexed property - its done automatically for arrays (CustomLazyBean would instantiate a new DynaBean and grows it accordingly). From reading the message on the FormDef user list, then just having a property which is a CustomLazyBean (rather than CustomLazyBean array) sounds like it would work for your user - then only thing then is I don't really understand how that then interacts with FormDef - hence my questions at the top. Sorry, should have got round to giving FormDef a go - but lifes busy :-( Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] To: Struts Users Mailing List [EMAIL PROTECTED] Sent: Friday, October 01, 2004 9:43 PM Subject: Re: Indexed Properties and Lazy List behaviour But if I need it to be a DynaActionForm subclass, then I'd just use LazyValidatorForm or its subclass, right? In which case, wouldn't I have to worry about it being properly initialized, as indicated in http://struts.apache.org/userGuide/building_controller.html#dyna_action_form_classes ? Someone asked about combining FormDef and LazyBeans to come up with a form containing indexed properties. FormDef works with DynaActionForms. If I have an array or list of dyna forms, I can use FormDef with each element. The problem is coming up with a lazy, non-session-scope implementation. I came up with the code snippet at https://formdef.dev.java.net/servlets/ReadMsg?list=usersmsgNo=12 because I assumed that in order to create a proper ActionForm, it needed to go through FormBeanConfig's createActionForm. Are lazy dyna forms exempt from this requirement? On Fri, 1 Oct 2004 21:14:25 +0100, Niall Pemberton [EMAIL PROTECTED] wrote: It could, although there is no need for it to be an ActionForm - could just be a LazyDynaBean. Having said that, you would probably want to override the default indexed type to be a LazyDynaBean array rather than ArrayList as LazyDynaBean doesn't populate Lists, but it does Arrays. public class CustomLazyBean extends LazyDynaBean { public CustomLazyBean() { super(); } protected Object defaultIndexedProperty(String name) { return new CustomLazyBean[0]; } } form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=myPackage.CustomLazyBean[]/ /form-bean Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] To: Struts Users Mailing List [EMAIL PROTECTED] Sent: Friday, October 01, 2004 8:07 PM Subject: Re: Indexed Properties and Lazy List behaviour In 2.3 of StrutsCatalogLazyList, it uses a Lazy*Form flavor to hold an indexed property. Can the indexed property itself an array or list of Lazy*Form objects? form-bean name=skillForm type=org.apache.struts.validator.LazyValidatorForm form-property name=skills type=org.apache.struts.validator.LazyValidatorForm/ /form-bean - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Indexed Properties and Lazy List behaviour
OK I think I must be spreading confusion - thats what you get, arrays of beans, not strings. For LazyValidatorForm the default for an indexed property is an ArrayList of LazyDynaBean - and it populates the LazyDynaBean for you automatically. For LazyDynaBean the default indexed property is an ArrayList - but it doesn't populate it with anything. If however you create a custom LazyDynaBean (like the example I gave) changing the default indexed property to an LazyDynaBean array then the default indexed property is an Array of LazyDynaBean - populated automatically. Now you can have 1...n levels of indexed beans to your hearts content. Niall - Original Message - From: Hubert Rabago [EMAIL PROTECTED] Subject: Re: Indexed Properties and Lazy List behaviour My understanding of the question on the user list was for a form which contained an array of beans, instead of just an array of strings. An example would be a form bean containing a list/array of children, each with a name, date of birth, daily allowance, etc. If each child is a dyna form, I can use FormDef for each element. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]