These examples might help...
If you’re not using AJAX then it probably makes more sense to put the Form
around the Loop:
T5.4:
http://jumpstart.doublenegative.com.au/jumpstart7/examples/tables/editableloop1
<http://jumpstart.doublenegative.com.au/jumpstart7/examples/tables/editableloop1>
http://jumpstart.doublenegative.com.au/jumpstart7/examples/tables/editableloopforupdate1
<http://jumpstart.doublenegative.com.au/jumpstart7/examples/tables/editableloopforupdate1>
T5.3:
http://jumpstart.doublenegative.com.au/jumpstart/examples/tables/editableloop1
<http://jumpstart.doublenegative.com.au/jumpstart/examples/tables/editableloop1>
http://jumpstart.doublenegative.com.au/jumpstart/examples/tables/editableloopforupdate1
<http://jumpstart.doublenegative.com.au/jumpstart/examples/tables/editableloopforupdate1>
If you’re using AJAX, then a Form per row works well:
T5.4:
http://jumpstart.doublenegative.com.au/jumpstart7/examples/ajax/formsinaloop
<http://jumpstart.doublenegative.com.au/jumpstart7/examples/ajax/formsinaloop>
T5.3:
http://jumpstart.doublenegative.com.au/jumpstart/examples/ajax/formsinaloop
<http://jumpstart.doublenegative.com.au/jumpstart/examples/ajax/formsinaloop>
Geoff
> On 24 Jul 2015, at 6:55 pm, Matthias Bieber <[email protected]> wrote:
>
>
> Hello,
>
> I have a loop that creates a few forms and I have implemented the onValidate
> method to validate the input. If an error occours in the textarea of the
> first form, the textareas of all other forms are marked as erroneous too,
> although the forms and textareas have different IDs. Whats wrong?
>
> Thanks in advance.
> M.B.
>
>
> Source code:
>
> Index.java:
> public class Index
> {
> @Property
> private int[] integers= { 1, 2, 3, 4, 5 };
>
> @Property
> private int anInteger;
>
> public Index()
> {
> }
> }
>
> Index.tml:
> <html t:type="layout" title="HelloWorld Index" t:sidebarTitle="Framework
> Version" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
> xmlns:p="tapestry:parameter">
> <t:Loop t:source="integers" t:value="anInteger">
> <div>${anInteger}</div>
> <t:MyForm id="anInteger" />
> </t:Loop>
> </html>
>
> MyForm.java:
>
> public class MyForm
> {
> @Parameter(required=true)
> @Property
> private int id;
>
> @Property
> private String text;
>
> @InjectComponent
> private Form form;
>
> @InjectComponent
> private TextArea textarea;
>
> @Inject
> Logger logger;
>
> @Inject
> Messages messages;
>
> void onPrepareForSubmitFromForm(int id) {
> this.id = id;
> }
> public void onSuccess() {
> logger.info("onSuccess()");
> }
>
> void onValidateFromForm() {
> logger.info("id: " + id);
> form.recordError(textarea, "Error");
> }
>
> public String getFormId() {
> return "form_" + id;
> }
>
> public String getTextareaId() {
> return "textarea_" + id;
> }
>
> public String getSubmitId() {
> return "submit_" + id;
> }
> }
>
> MyForm.tml:
>
> <t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
> xmlns:p="tapestry:parameter">
> <t:form t:id="form" id="prop:formId" t:context="id" >
> <t:textarea t:id="textarea" id="prop:textareaId" value="text"
> rows="3" cols="50" />
> <t:submit t:id="submit" id="prop:submitId" class="btn btn-large
> btn-primary" value="Send" />
> </t:form>
> </t:container>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>