Hi,

Thank you for your reply Lance, sorry I didn't see it sooner. I still
haven't managed to fix this, but I have done some experimenting and i'm not
sure if it's due to my misunderstanding (most likely) or some bug.

My ajaxformloop now looks like this:

<div class="col-sm-6" t:type="ajaxformloop" t:id="formloop"
source="invite.people" value="guest">
  <div class="formgroup">
  <t:label for="name"/>
  <t:textfield t:id="name" value="guest.name" t:validate="required,
maxlength=50"/>
  </div>

  <div class="formgroup">
  <t:label for="music"/>
  <t:textfield t:id="music" value="guest.music"/>
  </div>
  <div class="formgroup">
  <t:label for="attending"/>
  <t:select t:id="attending" value="guest.attending" model="attendingModel"
t:encoder="attendingEncoder"/>
  </div>
  <div class="formgroup">
  <t:label for="drink" />
  <t:select t:id="drink" value="guest.drink" model="drinkModel"
t:encoder="drinkEncoder"/>
  </div>
  <div class="formgroup">
  <t:label for="chocolate" />
  <t:select t:id="chocolate" value="guest.chocolate" model="chocolateModel"
t:encoder="chocolateEncoder"/>
  </div>
  <t:removerowlink>Remove</t:removerowlink>
  <div t:type="zone" t:id="addRowZone" id="addRowZone">
  <p:addRow>
  <t:addrowlink>Add a plus one</t:addrowlink>
  </p:addRow>
  </div>
  </div>
  <div class="col-sm-12">
  <button t:type="submit" />
  </div>



One thing I notice, is that as soon as I add the zone around the addRow
link, my add row link changes from saying "Add a plus one" to "Add row".
This makes me think tapestry is no longer picking up my add row link, and
is instead adding it's own? I think this as if I remove the addrow link
entirely, this is exactly what I get (the same result).

So my plan is to update that zone with an empty body. I'm not quite sure
how to do this, but as you mention AjaxResponseRenderer seems like the way
forwards, so I do this:

    @Inject
    private AjaxResponseRenderer ajaxResponseRenderer;
    @InjectComponent
    private Zone addRowZone;

My onAddRowFromFormLoop needs to return a "Person" object so I cannot
return anything special, but looking at the ajaxResponseRenderer I don't
know how I can update the contents of my addRowZone. Currently it looks
like this:

Object onAddRowFromFormLoop() {
Person person = null;
if (moreGuestsAllowed()) {
person = new Person();
invite.getPeople().add(person);
person.setInvite(invite);
dao.create(person);
dao.update(invite);
return person;
}

                //ajaxResponseRenderer.addRender("addRowZone", addRowZone);
return person;
}

I have also tried putting a t:if around the addrow link and then updating
the zone using the above line (I assumed it would re-render it, i'm not
quite sure) - this didn't work and I was left still with the "Add row"
rather than the "Add a plus one" link.

Any ideas why my "Add a plus one" addrowlink is lost as soon as I put it in
the zone? I put some test text "Hello" just inside the zone before
<p:addRow> add row link and this showed correctly, however if I put that
inside the <p:addRow> then it does not show and on inspecting the source of
the page produced, it isn't there at all.

So it looks to me like the zone shows, but the addrow link inside it does
not. Is this a bug, or just me?

Any help is really appreciated.

Thanks,
Steve

On 13 July 2015 at 20:47, Stephen Nutbrown <steves...@gmail.com> wrote:

> Hi!
>
> Wohoo, I'm getting married next year and I'm currently in the process of
> setting up a small wedding website for my guests to RSVP. However, I have a
> small problem which I'm sure has a simple solution, I just can't see it.
>
> I have an ajaxformloop for the guests to add +1s. Some have more allocated
> than others (eg some have kids etc). I'm using the form to collect names
> for placemats and drink preferences etc.
>
> I have a value from an Invite object  which represents the max number of
> guests for the invite. My ajaxformloop should only let them add that many
> guests using the add row link.
>
> I've tried returning null from my onAddNewRow event and it didn't like
> that.
>
> I've also tried putting a t:if around the add new row link, however this
> doesn't work, probably because it's ajax and doesn't update this part.
>
> Is there a max size parameter or something similar for the add row link or
> the ajaxformloop? Or perhaps there is another easy way, I'm sure there will
> be but I can't spot it.
>
> Thanks,
> Steve
>

Reply via email to