15,000 Jobs Available in:
Java, ASP, C#, PHP, SQL, SAP, MySQL and many more.
- Class Quick -
The moose likes JSF and the fly likes Why the getter method of managed-bean was invoked twice? Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


JavaRanch » Java Forums » Java » JSF
Reply Bookmark "Why the getter method of managed-bean was invoked twice?" Watch "Why the getter method of managed-bean was invoked twice?" New topic
Author

Why the getter method of managed-bean was invoked twice?

Wei Geng
Greenhorn

Joined: Dec 10, 2004
Posts: 28
I wrote a very simlpe JSF page like this:


And the managed bean class like this:



When I input a name and submitted this page, the console output is:


I have 2 questions:
1. Why the getUserName() method was invoked twice by system? I supposed 1 time is correct.
2. When the tag <f:setPropertyActionListener/> be executed? It was said it will be executed before simple actionListener. However, it seems that this tag was not executed until 'sayHello' actionListener finished.

Please help, thanks!
Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 11740

You should never assume that property getters on a backing bean will be called only once. In particular, don't do any side (state-changing) logic in getters for that reason. The bean's properties will be retrieved at multiple times in the JSF lifecycle as needed to prepare for update, display, and validate.

As far as the second question goes, I haven't studied that.


A lot the of modern-day software development platforms are designed to permit parcelling out work to those with the best aptitude for it. A lot of modern-day business is predicated on making one person do all the work, regardless of aptitude.
Wei Geng
Greenhorn

Joined: Dec 10, 2004
Posts: 28
Tim Holloway wrote:You should never assume that property getters on a backing bean will be called only once. In particular, don't do any side (state-changing) logic in getters for that reason. The bean's properties will be retrieved at multiple times in the JSF lifecycle as needed to prepare for update, display, and validate.

As far as the second question goes, I haven't studied that.



Thanks for your answer to the first question.

Regarding to the second one, I guess I've got it.

According to the book 'Core JSF Programming', the method that is binded to 'actionListener' attribute in component tag will always been invoked earlier than the progressAction method of <f:actionListener> ActionListener.

In my opinion, <f:setPropertyActionListener> is a kind of <f:actionListener>. Therefore, its progressAction method will not be invoked until 'actionListener' attribute method finished.

I have made a test and it proved my guess.

This message was edited 1 time. Last update was at by Wei GENG

 
 
subject: Why the getter method of managed-bean was invoked twice?
 
WebSphere development made easy
without the weight of IBM tools
http://www.myeclipseide.com