[ 
http://issues.apache.org/jira/browse/MYFACES-1492?page=comments#action_12449372 
] 
            
Martin Marinschek commented on MYFACES-1492:
--------------------------------------------

Hi Mircea, 

why shouldn't your getters be called if you call renderResponse? 

Of course they will be called in the rendering phase, as they are supposed to 
be. The only getters which will not be called are getters which are bound to 
binding="..." attributes. If the getters wouldn't be called even if the tree is 
not recreated, we couldn't build dynamic JSF pages, and all of us sure do.

I suggest reading Core JSF on this topic - you'll find a nice example there 
explaining the issue with the valueChangeListeners. 

regards,

Martin

> valueChangeListener is being called before the setters, even with 
> immediate="true"
> ----------------------------------------------------------------------------------
>
>                 Key: MYFACES-1492
>                 URL: http://issues.apache.org/jira/browse/MYFACES-1492
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 1.1.4
>            Reporter: Mircea Zahan
>         Assigned To: Cagatay Civici
>            Priority: Critical
>             Fix For: 1.1.4
>
>
> valueChangeListener is being called before the setters, even with 
> immediate="true".
> This is not the right behavior since it overwrites any property modified in 
> the event handler.
> <t:panelGrid columns="2" cellpadding="0" cellspacing="5px" 
> columnClasses="left top, left top">
>     <t:outputLabel for="infoId" value="Options"/>
>     <t:selectOneMenu id="infoId" value="#{productBean.infoId}" 
> onchange="submit()" valueChangeListener="#{productBean.valueChangedHandler}" 
> immediate="true">
>         <f:selectItem itemValue="-1" itemLabel="<new short info>"/>
>         <f:selectItems value="#{productBean.shortInfoSelectItems}"/>
>     </t:selectOneMenu>
>     <t:outputLabel for="descText" value="Description"/>
>     <t:inputTextarea id="descText" rows="8" 
> value="#{productBean.description}"/>
>     <t:outputLabel for="utilText" value="Usage"/>
>     <t:inputTextarea id="utilText" styleClass="wXXXL" rows="8" 
> value="#{productBean.usage}"/>
> </t:panelGrid>
> public class ProductBean {
>     private Long infoId;
>     private String description;
>     private String usage;
> //    ....  setters and getters for the above properties
>     public void valueChangedHandler(ValueChangeEvent event) {
>         Long infoId = (Long) event.getNewValue();
>         if ((infoId != null) && (infoId > 0)) {
>             //DataService and ProductInfo are related to Hibernate
>             ProductInfo info = DataService.getProductInfo(infoId);
>             this.description = info.getDescription();
>             this.usage = info.getUsage();
>         }
>     }
> }
> Description and Usage properties can never be changed since they get 
> overwritten with the initial values.
> :(((((((((((((((((((((((((

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to