[ http://issues.apache.org/jira/browse/MYFACES-1492?page=comments#action_12449208 ] Mircea Zahan commented on MYFACES-1492: ---------------------------------------
Already tryed that, the getters are not called because the view is not re-created. Anyway, this lifecycle is wrong, the documentation says that with immediate="true" the event would be fired after the setters. I quote from myfaces doc: "A boolean value that identifies the phase during which value change events should fire. During normal event processing, value change events are fired during the "invoke application" phase of request processing. If this attribute is set to "true", these methods are fired instead at the end of the "apply request values" phase." AND DAMN, YOU ARE QUICK ON SETTING ISSUES ON INVALID. GIVE IT SOME THINKING BEFORE YOU DO IT !!!!!!! > 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 > 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
