Basically, you are using Ajax to trigger an action.  AjaxFormLoop expects 
certain things (context)
to be in the Tapestry environment (see @Environmental) and it isn't.
This is why you get the exception.

I haven't used AjaxFormLoop myself, and don't know how to help you further,
but perhaps somebody can help here.
Now your question is worded so someone can answer it I think...

On Apr 11, 2013, at 1:41 AM, Bartlomiej Kalata wrote:

> I put some example code to show what I try to do and discribe my problem. I 
> show this based on modify jumpstart ajaxformloop example 
> http://jumpstart.doublenegative.com.au/jumpstart/examples/ajax/formloop1:
> 
> Example.tml
> 
> <table>
>  <tbody t:type="AjaxFormLoop" t:source="persons" t:value="person" 
> t:encoder="personEncoder">
>  <t:submitnotifier>
>    <t:delegate to="block:apFormFragmentBlock"/>
>    <t:block id="apFormFragmentBlock">
>      <tr>
>        <td><input t:type="TextField" t:id="firstName" 
> t:value="person.firstName"/></td>
>        <td><input t:type="TextField" t:id="lastName" 
> t:value="person.lastName"/></td>
>        <td><input t:type="Select" t:id="region" value="person.region"/></td>
> 
>        <td>
>          <t:removerowlink>remove</t:removerowlink>
>        </td>
>        <td>
>          <div id="copyCurrentRow">copy current row</div>
>        </td>
>      </tr>
>      <tr>
>        <td>
>          <div t:type="FormInjector" t:id="injector" id="injector"/>
>        </td>
>      </tr>
>    </t:block>
>  </t:submitnotifier>
>  <p:addRow>
>    <tr>
>      <td colspan="6" style="text-align: right">
>        <t:addrowlink>Add a row</t:addrowlink>
>      </td>
>    </tr>
>  </p:addRow>
>  </tbody>
> </table>
> 
> Example.java
> 
>  @Getter
>  private Person person;
> 
>  @Inject
>  private Block apFormFragmentBlock;
> 
>  @OnEvent(EventConstants.ACTION)
>  public Block onAction(){
>    // In real code this should be copy of existion element
>    this.person = new Person();
>    return apFormFragmentBlock;
>  }
> 
> example.js
> 
> $("#copyCurrentRow").bind('click', function() {
> $("#injector").tapestryFormInjector("trigger");
> });
> 
> My problems:
> 1) Insisde ajax form loop id od injector element changes, but I propably find 
> solution in jquery how to find this   element
> 2) When I click on copy I have exception and I don't know how to do this in 
> ajax form loop context :
> 
> Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: No 
> object of type org.apache.tapestry5.corelib.internal.AjaxFormLoopContext is 
> available from the Environment. [at 
> classpath:pl/raiffeisen/aml/gs/presentation/components/tabs/ApData.tml, line 
> 94]
>    at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:153)
>    at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.render(ComponentPageElementImpl.java:209)
>    at 
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:72)
>    ... 146 more
> Caused by: org.apache.tapestry5.ioc.util.UnknownValueException: No object of 
> type org.apache.tapestry5.corelib.internal.AjaxFormLoopContext is available 
> from the Environment.
>    at 
> org.apache.tapestry5.internal.services.EnvironmentImpl.peekRequired(EnvironmentImpl.java:88)
>    at $Environment_128a351287b.peekRequired(Unknown Source)
>    at $Environment_128a351277a.peekRequired(Unknown Source)
>    at 
> org.apache.tapestry5.internal.transform.EnvironmentalWorker$EnvironmentalConduit.get(EnvironmentalWorker.java:59)
>    at 
> org.apache.tapestry5.corelib.components.RemoveRowLink.conduit_get_context(RemoveRowLink.java)
>    at 
> org.apache.tapestry5.corelib.components.RemoveRowLink.beginRender(RemoveRowLink.java:56)
>    at 
> org.apache.tapestry5.corelib.components.RemoveRowLink.beginRender(RemoveRowLink.java)
>    at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.invokeComponent(ComponentPageElementImpl.java:202)
>    at 
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:133)
>    ... 148 more
> 
> 
> 
> 
> W dniu 2013-04-10 19:41, b...@softwaremind.pl pisze:
>> Ok, I try to explain my problem clearly.
>> I implemented dynamic generation of form inputs using ajax form loop. I used 
>> Tapestry core remove and add row components to remove and add new input 
>> fields form fragment. It works perfectly. But my client want to make button 
>> on each ajax form loop row (similar to standard remove button) which should 
>> copy existing (read from DB) or newly completed row and paste it below 
>> current element. I try to used form fragment or add add row component to 
>> implement this task but it doesn't work. I do not quite know how to approach 
>> this problem. Perhaps you could give me some simple example how to do this 
>> or give a link to ready solution. Maybe someone has already solved similar 
>> problem or write copy existing row component. I can attach some source code 
>> but is it a lot and complicated.
>> 
>> W dniu 2013-04-10 18:50, Lenny Primak napisał(a):
>>> This question isn't nearly detailed enough or worded in a way that is
>>> possible to answer.
>>> 
>>> On Apr 10, 2013, at 9:56 AM, Bartlomiej Kalata wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I have problem to implement some funtionality using Tapestry 5.6.3
>>>> I'm using ajaxformloop to add new row and remove exisiting, but I must 
>>>> write duplicate option for each row, which copy current row and inject it 
>>>> below exisiting element with data from existing row. Can you tell me what 
>>>> is the best way to do this task?
>>>> 
>>>> -- 
>>>> Bartłomiej Kalata
>>>> Software Engineer II
>>>> Software Mind SA | Focused on Results
>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>> 
>> 
> 
> -- 
> Bartłomiej Kalata
> Software Engineer II
> Software Mind SA | Focused on Results
> 


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

Reply via email to