[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tapestry-user
Subject:    Re: Multiple new objects with a component
From:       Geoff Callender <geoff.callender.jumpstart () gmail ! com>
Date:       2014-04-15 22:47:02
Message-ID: F9BA0EC4-9CE9-4229-B29C-AC0AE6E40A7C () gmail ! com
[Download RAW message or body]

On each Loop, try formstate="iteration". Here's an example:

	http://jumpstart.doublenegative.com.au/jumpstart/examples/tables/editableloop1
	
And for T5.4:

	http://jumpstart.doublenegative.com.au/jumpstart7/examples/tables/editableloop1

Cheers,

Geoff

On 16/04/2014, at 12:30 AM, Tony Nelson wrote:

> I am trying to build a form where there are N instances of a custom editing \
> component.  For example, something simple like: 
> <t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
> 
> ${idx} :
> Id: <t:textfield value="domainObj.id" validate="maxLength=5" maxlength="5" /> :
> B: <t:textfield value="domainObj.a" validate="maxlength=10" maxlength="10" />
> <br/>
> 
> </t:container>
> 
> The component Java code is trivial:
> 
> public class EditObject {
> 
> @Property
> @Parameter(required = true)
> SimplePojo domainObj;
> 
> @Property
> @Parameter(required = false, value = "0")
> Integer idx;
> 
> void onValidate() {
> log.info("EditObject onValidate: " + domainObj);
> }
> }
> 
> 
> There is no AJAX, just a simple posted form.
> 
> This component is used like this:
> 
> <!DOCTYPE html>
> <html
> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
> > 
> <head>
> <title>Multiple components in a loop</title>
> </head>
> <body>
> <t:form t:id="myForm">
> 
> <h3>Group A</h3>
> <t:loop source="groupA" value="domainObj" index="idx" element="div">
> <t:EditObject domainObj="domainObj" idx="idx"/>
> </t:loop>
> 
> <h3>Group B</h3>
> <t:loop source="groupB" value="domainObj" index="idx" element="div">
> <t:EditObject domainObj="domainObj" idx="idx"/>
> </t:loop>
> 
> <t:submit value="Submit"/>
> </t:form>
> </body>
> </html>
> 
> The main controller is very simple:
> 
> public class MultiDemo {
> @Inject
> private Logger logger;
> 
> @Property
> List<SimplePojo> groupA;
> 
> @Property
> List<SimplePojo> groupB;
> 
> @Property
> SimplePojo domainObj;
> 
> @Property
> Integer idx;
> 
> @Log
> void onValidateFromMyForm() {
> for (SimplePojo sp : groupA) {
> logger.info("A: " + sp.toString());
> }
> 
> for (SimplePojo sp : groupB) {
> logger.info("B: " + sp.toString());
> }
> }
> 
> @Log
> void setupRender() {
> createGroups();
> }
> 
> @Log
> void onPrepare() {
> // if this is commented out, I get a NPE in onValidateFromMyForm
> createGroups();
> }
> 
> void createGroups() {
> groupA = createGroup();
> groupB = createGroup();
> }
> 
> List<SimplePojo> createGroup() {
> 
> List<SimplePojo> result = new ArrayList<SimplePojo>();
> for (int i = 0; i < 3; i++) {
> result.add(new SimplePojo());
> }
> 
> return result;
> }
> }
> 
> That's it, the whole page.  But I just can't get it to work.
> 
> If I comment out onPrepare() I get a NPE in the onValidateFromMyForm, which makes \
> sense.  With it uncommented, onValidateFromMyForm is always new null filled \
> objects. 
> The logging in the component onValidate shows domainObj.id being set, but never \
> domainObj.A. 
> When the form redraws, it loses any values I typed in and is blank again.
> 
> I'm missing something obvious I'm sure, but can't see what it is.
> 
> Any help would be greatly appreciated.
> 
> Thanks
> Tony
> 
> Since 1982, Starpoint Solutions has been a trusted source of human capital and \
> solutions. We are committed to our clients, employees, environment, community and \
> social concerns.  We foster an inclusive culture based on trust, respect, honesty \
> and solid performance. Learn more about Starpoint and our social responsibility at \
> http://www.starpoint.com/social_responsibility 
> This email message from Starpoint Solutions LLC is for the sole use of  the \
> intended recipient(s) and may contain confidential and privileged  information.  \
> Any unauthorized review, use, disclosure or distribution is prohibited.  If you are \
> not the intended recipient, please contact the sender by reply email and destroy \
> all copies of the original message.  Opinions, conclusions and other information in \
> this message that do not relate to the official business of Starpoint Solutions \
> shall be understood as neither given nor endorsed by it. 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic