You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Bartlomiej Kalata <ba...@softwaremind.pl> on 2013/04/10 15:56:50 UTC
AjaxFormLoop problem
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-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: AjaxFormLoop problem
Posted by ba...@softwaremind.pl.
I thinking about this solution. Unfortunately I must add this option to
all ajax form loop rows both of which are persist in DB and new added
rows witch arent persist anywhere yet. It should be option which always
take current row and paste it below copying all data from current row,
regardless of whether data persist or no. And after all I should persist
all new added row using ajax form loop mechanism.
W dniu 2013-04-12 18:24, George Christman napisał(a):
> Providing the data has been saved to the database and an id exist,
> couldn't you use something like
>
> <t:ActionLink t:="yourId" context="person.id"
> t:zone="someZone">Button</t:ActionLink> next to your remove action.
>
> Then in the backend create an event handler for your action,
>
> Object onActionFromYourId(Person person) {
> //do something
> return someZone.getBody();
> }
>
> Lastly, process zone in the interface.
>
> Not sure if that helps.
>
>
> On Thu, Apr 11, 2013 at 3:07 PM, Lenny Primak
> <lp...@hope.nyc.ny.us> wrote:
>> 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, baka@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-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
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>
>>> --
>>> Bartłomiej Kalata
>>> Software Engineer II
>>> Software Mind SA | Focused on Results
>>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> 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
Re: AjaxFormLoop problem
Posted by George Christman <gc...@cardaddy.com>.
Providing the data has been saved to the database and an id exist,
couldn't you use something like
<t:ActionLink t:="yourId" context="person.id"
t:zone="someZone">Button</t:ActionLink> next to your remove action.
Then in the backend create an event handler for your action,
Object onActionFromYourId(Person person) {
//do something
return someZone.getBody();
}
Lastly, process zone in the interface.
Not sure if that helps.
On Thu, Apr 11, 2013 at 3:07 PM, Lenny Primak <lp...@hope.nyc.ny.us> wrote:
> 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, baka@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-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
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>
>> --
>> Bartłomiej Kalata
>> Software Engineer II
>> Software Mind SA | Focused on Results
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
--
George Christman
www.CarDaddy.com
P.O. Box 735
Johnstown, New York
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: AjaxFormLoop problem
Posted by Lenny Primak <lp...@hope.nyc.ny.us>.
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, baka@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-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
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
> --
> Bartłomiej Kalata
> Software Engineer II
> Software Mind SA | Focused on Results
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: AjaxFormLoop problem
Posted by Bartlomiej Kalata <ba...@softwaremind.pl>.
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, baka@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-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
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>
--
Bartłomiej Kalata
Software Engineer II
Software Mind SA | Focused on Results
Re: AjaxFormLoop problem
Posted by ba...@softwaremind.pl.
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-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
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: AjaxFormLoop problem
Posted by Lenny Primak <lp...@hope.nyc.ny.us>.
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-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