You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Matthias Bieber <Ma...@gmx.de> on 2015/07/15 16:34:26 UTC

BeanEditForm in jquery.dialog - problem with validation

Hello,
 
I have a BeanEditForm inside a jquery.dialog. The dialog will be opened if you click on a link.
I want to validate the input by using onValidateFrom..Form..() and form.recordError().
 
Once the submit button has been clicked, the page will be reloaded and the jquery.dialog disappears.
After opening the dialog again, the BeanEditForm has been reset. So the error message has not been displayed.
 
Do you know how to keep the dialog open with the current error message?
 
Thank you.

 
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:jquery.dialogajaxlink t:id="createPerson" class="linkbutton round"
                        t:dialog="newPersonDialog" t:zone="newPersonDialogZone">
        Create Person
    </t:jquery.dialogajaxlink>
                    
    <t:jquery.dialog t:id="newPersonDialog" t:clientId="newPersonDialog"
                params="newPersonDialogParams">
        <t:zone t:id="newPersonDialogZone" id="newPersonDialogZone">
            <t:BeanEditForm t:id="personForm" t:object="person" t:cancel="true" exclude="id, owner"/>
        </t:zone>
    </t:jquery.dialog>
</html>
 
Index.java:
    @Property
    private Person person;
    
    @Component(id = "personForm")
    private BeanEditForm form;
    @InjectComponent
    private Zone newPersonDialogZone;
    
    public Index()
    {
        person = new Person();
    }
          
    @Log
    void onValidateFromPersonForm()
    {
        String name = person.getName();
        
        if(name == null || name.isEmpty())
            form.recordError("Please enter a name");
    }
    
    Object onActionFromCreatePerson() {
        return newPersonDialogZone.getBody();
    }
    
    public JSONObject getNewPersonDialogParams() {
        JSONObject obj = new JSONObject();
        obj.put("autoopen", "true");
        obj.put("modal", "true");
        obj.put("title", "Title");
        obj.put("height", "auto");
        obj.put("width", "auto");
        return obj;
    }

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


Re: BeanEditForm in jquery.dialog - problem with validation

Posted by Chris Poulsen <ma...@nesluop.dk>.
Try bindnig the BeanEditForm to the zone to prevent full page reload on
submit (zone="^")

On Wed, Jul 15, 2015 at 4:34 PM, Matthias Bieber <Ma...@gmx.de> wrote:

> Hello,
>
> I have a BeanEditForm inside a jquery.dialog. The dialog will be opened if
> you click on a link.
> I want to validate the input by using onValidateFrom..Form..() and
> form.recordError().
>
> Once the submit button has been clicked, the page will be reloaded and the
> jquery.dialog disappears.
> After opening the dialog again, the BeanEditForm has been reset. So the
> error message has not been displayed.
>
> Do you know how to keep the dialog open with the current error message?
>
> Thank you.
>
>
> 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:jquery.dialogajaxlink t:id="createPerson" class="linkbutton round"
>                         t:dialog="newPersonDialog"
> t:zone="newPersonDialogZone">
>         Create Person
>     </t:jquery.dialogajaxlink>
>
>     <t:jquery.dialog t:id="newPersonDialog" t:clientId="newPersonDialog"
>                 params="newPersonDialogParams">
>         <t:zone t:id="newPersonDialogZone" id="newPersonDialogZone">
>             <t:BeanEditForm t:id="personForm" t:object="person"
> t:cancel="true" exclude="id, owner"/>
>         </t:zone>
>     </t:jquery.dialog>
> </html>
>
> Index.java:
>     @Property
>     private Person person;
>
>     @Component(id = "personForm")
>     private BeanEditForm form;
>     @InjectComponent
>     private Zone newPersonDialogZone;
>
>     public Index()
>     {
>         person = new Person();
>     }
>
>     @Log
>     void onValidateFromPersonForm()
>     {
>         String name = person.getName();
>
>         if(name == null || name.isEmpty())
>             form.recordError("Please enter a name");
>     }
>
>     Object onActionFromCreatePerson() {
>         return newPersonDialogZone.getBody();
>     }
>
>     public JSONObject getNewPersonDialogParams() {
>         JSONObject obj = new JSONObject();
>         obj.put("autoopen", "true");
>         obj.put("modal", "true");
>         obj.put("title", "Title");
>         obj.put("height", "auto");
>         obj.put("width", "auto");
>         return obj;
>     }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>