You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Name Surname <wi...@outlook.com> on 2014/11/27 02:44:58 UTC

Issues with beaneditform component

I have one very odd situation here and it regards beaneditform. I have implemented following code:


public class ListUsers {
    
    @Inject
    private Logic logic;
    
    @InjectPage
    private PermissionsPage permissionsPage;
    
    
    @Property
    private User user;
    
    /**
     * Vraca listu korisnika
     * @return user list
     */
    public List getUsers()
    {
        return logic.izlistajSveKorisnike();
    }
    
    /**
     * Deletes user
     * @return null
     */
    @CommitAfter
    public String onActionFromDelete(User u)
    {
        logic.deleteUser(u);
        return null;
    }

    /**
     * redirects to permissions page
     * @param k
     * @return page permissionspage
     */
    public Object onActionFromEdit(User u)
    {
        permissionsPage.setData(u);
        return permissionsPage;
    }

<t:layout t:pageTitle='${message:ListUsers}' xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter">
    <t:form>
        <div class="grid-container">
            <t:grid source="users" row="user" exclude="userID,userPassword,userTypeOfTheUser,listOfQuestions,listOfMessages, isAdmin, isUser" add="edit,delete">

                <p:deletecell>
                    <t:actionlink t:id="delete" context="user">Delete user</t:actionlink>
                </p:deletecell>
                <p:editcell>
                    <t:actionlink t:id="edit" context="user">Edit permissions</t:actionlink>
                </p:editcell>
            </t:grid>
        </div>
    </t:form>
</t:layout>



Here I have a ListUsers page which has all users listed pulled from DB.


Now when a client clicks on Edit permissions button of some user from the list it redirects him to a PermissionsPage which is following:

<t:layout t:pageTitle='${message:PermissionsPages}' xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<t:beaneditform t:id="form" object="user" exclude="userUserName,userPassword" submitlabel="Save"/>
</t:layout>

public class PermissionsPage {

    @Component
    private BeanEditForm form;
    @Inject
    private Logic logic;
    @Property
    @Persist(value = "flash")
    private User user;

    /**
     * After succesfully submitting from a form redirect a user to a page
     * ListClassesPage
     *
     * @return ListClassesPage
     */
    @CommitAfter
    public String OnSuccess() {
        logic.editUser(user);
        return "ListClassesPage";
    }

    /**
     * Sets user
     * @param u user
     */
    public void setData(User u) {
        user = u;
    }
}



Now after I press Save, it fires event however doesn't process anything? Am I somewhere wrong?
Also because of the issue regarding http://stackoverflow.com/questions/5366498/tapestry-5-beaneditform-component-trouble I had to remove all constructors from entity User but default one. If anyone knows or had similar trouble with this, would be grateful to hear his/her solution. 

Thanks in advance.

 		 	   		  

RE: Issues with beaneditform component

Posted by Name Surname <wi...@outlook.com>.
Nope. Implementation is fair OK to me. Checked console and there is nothing and I mean nothing on screen when I press Submit. It's like I didn't press anything???

> Date: Thu, 27 Nov 2014 22:48:14 +1100
> Subject: RE: Issues with beaneditform component
> From: chris@opencsta.org
> To: users@tapestry.apache.org
> 
> Dunno - I use the param user in onActivate instead of setData.  Also just
> int.
> 
> During @setupRender stage, fetch from logic the orig.
> 
> At save time, my logic sets it all from form object.
> 
> Make sense?
 		 	   		  

RE: Issues with beaneditform component

Posted by Chris Mylonas <ch...@opencsta.org>.
Dunno - I use the param user in onActivate instead of setData.  Also just
int.

During @setupRender stage, fetch from logic the orig.

At save time, my logic sets it all from form object.

Make sense?

RE: Issues with beaneditform component

Posted by Name Surname <wi...@outlook.com>.
Hello Chris! Well the thing is I used @persist just for that purpose, to save me from using the stale user object. There is some other issue around here which at this stage I can't figure out. :/

> Date: Thu, 27 Nov 2014 13:04:56 +1100
> Subject: Re: Issues with beaneditform component
> From: chris@opencsta.org
> To: users@tapestry.apache.org
> 
> On permission page I dont think u need @persist, you are setting the user
> already.
> 
> The reason: I think its because when it goes to save it is using the stale
> user object discarding the form submission changes.
> On 27/11/2014 12:45 pm, "Name Surname" <wi...@outlook.com> wrote:
> 
> > I have one very odd situation here and it regards beaneditform. I have
> > implemented following code:
> >
> >
> > public class ListUsers {
> >
> >     @Inject
> >     private Logic logic;
> >
> >     @InjectPage
> >     private PermissionsPage permissionsPage;
> >
> >
> >     @Property
> >     private User user;
> >
> >     /**
> >      * Vraca listu korisnika
> >      * @return user list
> >      */
> >     public List getUsers()
> >     {
> >         return logic.izlistajSveKorisnike();
> >     }
> >
> >     /**
> >      * Deletes user
> >      * @return null
> >      */
> >     @CommitAfter
> >     public String onActionFromDelete(User u)
> >     {
> >         logic.deleteUser(u);
> >         return null;
> >     }
> >
> >     /**
> >      * redirects to permissions page
> >      * @param k
> >      * @return page permissionspage
> >      */
> >     public Object onActionFromEdit(User u)
> >     {
> >         permissionsPage.setData(u);
> >         return permissionsPage;
> >     }
> >
> > <t:layout t:pageTitle='${message:ListUsers}' xmlns:t="
> > http://tapestry.apache.org/schema/tapestry_5_3.xsd"
> > xmlns:p="tapestry:parameter">
> >     <t:form>
> >         <div class="grid-container">
> >             <t:grid source="users" row="user"
> > exclude="userID,userPassword,userTypeOfTheUser,listOfQuestions,listOfMessages,
> > isAdmin, isUser" add="edit,delete">
> >
> >                 <p:deletecell>
> >                     <t:actionlink t:id="delete" context="user">Delete
> > user</t:actionlink>
> >                 </p:deletecell>
> >                 <p:editcell>
> >                     <t:actionlink t:id="edit" context="user">Edit
> > permissions</t:actionlink>
> >                 </p:editcell>
> >             </t:grid>
> >         </div>
> >     </t:form>
> > </t:layout>
> >
> >
> >
> > Here I have a ListUsers page which has all users listed pulled from DB.
> >
> >
> > Now when a client clicks on Edit permissions button of some user from the
> > list it redirects him to a PermissionsPage which is following:
> >
> > <t:layout t:pageTitle='${message:PermissionsPages}' xmlns:t="
> > http://tapestry.apache.org/schema/tapestry_5_3.xsd">
> > <t:beaneditform t:id="form" object="user"
> > exclude="userUserName,userPassword" submitlabel="Save"/>
> > </t:layout>
> >
> > public class PermissionsPage {
> >
> >     @Component
> >     private BeanEditForm form;
> >     @Inject
> >     private Logic logic;
> >     @Property
> >     @Persist(value = "flash")
> >     private User user;
> >
> >     /**
> >      * After succesfully submitting from a form redirect a user to a page
> >      * ListClassesPage
> >      *
> >      * @return ListClassesPage
> >      */
> >     @CommitAfter
> >     public String OnSuccess() {
> >         logic.editUser(user);
> >         return "ListClassesPage";
> >     }
> >
> >     /**
> >      * Sets user
> >      * @param u user
> >      */
> >     public void setData(User u) {
> >         user = u;
> >     }
> > }
> >
> >
> >
> > Now after I press Save, it fires event however doesn't process anything?
> > Am I somewhere wrong?
> > Also because of the issue regarding
> > http://stackoverflow.com/questions/5366498/tapestry-5-beaneditform-component-trouble
> > I had to remove all constructors from entity User but default one. If
> > anyone knows or had similar trouble with this, would be grateful to hear
> > his/her solution.
> >
> > Thanks in advance.
> >
> >
 		 	   		  

Re: Issues with beaneditform component

Posted by Chris Mylonas <ch...@opencsta.org>.
On permission page I dont think u need @persist, you are setting the user
already.

The reason: I think its because when it goes to save it is using the stale
user object discarding the form submission changes.
On 27/11/2014 12:45 pm, "Name Surname" <wi...@outlook.com> wrote:

> I have one very odd situation here and it regards beaneditform. I have
> implemented following code:
>
>
> public class ListUsers {
>
>     @Inject
>     private Logic logic;
>
>     @InjectPage
>     private PermissionsPage permissionsPage;
>
>
>     @Property
>     private User user;
>
>     /**
>      * Vraca listu korisnika
>      * @return user list
>      */
>     public List getUsers()
>     {
>         return logic.izlistajSveKorisnike();
>     }
>
>     /**
>      * Deletes user
>      * @return null
>      */
>     @CommitAfter
>     public String onActionFromDelete(User u)
>     {
>         logic.deleteUser(u);
>         return null;
>     }
>
>     /**
>      * redirects to permissions page
>      * @param k
>      * @return page permissionspage
>      */
>     public Object onActionFromEdit(User u)
>     {
>         permissionsPage.setData(u);
>         return permissionsPage;
>     }
>
> <t:layout t:pageTitle='${message:ListUsers}' xmlns:t="
> http://tapestry.apache.org/schema/tapestry_5_3.xsd"
> xmlns:p="tapestry:parameter">
>     <t:form>
>         <div class="grid-container">
>             <t:grid source="users" row="user"
> exclude="userID,userPassword,userTypeOfTheUser,listOfQuestions,listOfMessages,
> isAdmin, isUser" add="edit,delete">
>
>                 <p:deletecell>
>                     <t:actionlink t:id="delete" context="user">Delete
> user</t:actionlink>
>                 </p:deletecell>
>                 <p:editcell>
>                     <t:actionlink t:id="edit" context="user">Edit
> permissions</t:actionlink>
>                 </p:editcell>
>             </t:grid>
>         </div>
>     </t:form>
> </t:layout>
>
>
>
> Here I have a ListUsers page which has all users listed pulled from DB.
>
>
> Now when a client clicks on Edit permissions button of some user from the
> list it redirects him to a PermissionsPage which is following:
>
> <t:layout t:pageTitle='${message:PermissionsPages}' xmlns:t="
> http://tapestry.apache.org/schema/tapestry_5_3.xsd">
> <t:beaneditform t:id="form" object="user"
> exclude="userUserName,userPassword" submitlabel="Save"/>
> </t:layout>
>
> public class PermissionsPage {
>
>     @Component
>     private BeanEditForm form;
>     @Inject
>     private Logic logic;
>     @Property
>     @Persist(value = "flash")
>     private User user;
>
>     /**
>      * After succesfully submitting from a form redirect a user to a page
>      * ListClassesPage
>      *
>      * @return ListClassesPage
>      */
>     @CommitAfter
>     public String OnSuccess() {
>         logic.editUser(user);
>         return "ListClassesPage";
>     }
>
>     /**
>      * Sets user
>      * @param u user
>      */
>     public void setData(User u) {
>         user = u;
>     }
> }
>
>
>
> Now after I press Save, it fires event however doesn't process anything?
> Am I somewhere wrong?
> Also because of the issue regarding
> http://stackoverflow.com/questions/5366498/tapestry-5-beaneditform-component-trouble
> I had to remove all constructors from entity User but default one. If
> anyone knows or had similar trouble with this, would be grateful to hear
> his/her solution.
>
> Thanks in advance.
>
>

Re: Issues with beaneditform component

Posted by Thiago H de Paula Figueiredo <th...@gmail.com>.
On Wed, 26 Nov 2014 23:44:58 -0200, Name Surname  
<wi...@outlook.com> wrote:

>     @CommitAfter
>     public String OnSuccess() {
>         logic.editUser(user);
>         return "ListClassesPage";
>     }

I'm not sure it matters, but try onSuccess(), without capitalizing the  
first letter.

> Now after I press Save, it fires event however doesn't process anything?

What do you mean by "doesn't process anything"? Is the event handler  
method invoked?

> http://stackoverflow.com/questions/5366498/tapestry-5-beaneditform-component-trouble  
> I had to remove all constructors from entity User but default one.

You didn't need that. All you needed, and there's an answer telling you  
that, is a

void onPrepare() {
	if (user == null) {
		user = new User(....);
	}
}

-- 
Thiago H. de Paula Figueiredo
Tapestry, Java and Hibernate consultant and developer
http://machina.com.br

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