Monday, November 1, 2010

ADF UI - Getting updated values in valueChangeListener methods

We use valueChangeListener for different ADF components like radio buttons (af:selectOneRadio), choicelists (af:selectOneChoice) and list of values ie., LOVs (af:inputComboboxListOfValues), etc., But, when you try to get the value of the attribute in the valueChangeListener method, you'll end up in getting old value but not the latest updated value. You need to call the processUpdates method to get the updated values.

valueChangeEvent.getComponent().processUpdates(FacesContext.getCurrentInstance());


Sample usage in valueChangeListener method:
public void copyPresentAddress(ValueChangeEvent vce){ vce.getComponent().processUpdates(FacesContext.getCurrentInstance()); Boolean sameAsPresentAddress = sameAddressCheckbox.isSelected(); if(sameAsPresentAddress){ ADFUtil.invokeEL("#{bindings.copyPresentAddress.execute}"); } else{ ADFUtil.invokeEL("#{bindings.resetPermanentAddress.execute}"); } }


But, if you're interested in getting both old as well as new values, you can use the methods getOldValue() and getNewValue() of valueChangeEvent.

Sample Method:
public void copyPresentAddress(ValueChangeEvent vce){ String oldValue =(String) vce.getOldValue(); String newValue = (String) vce.getNewValue(); if("residence".equals(newValue)){ //logic to render residence address region } }

1 comment:

  1. Excellent post and very informative as well. Your knowledge appears very well on this topic and the way you have explained it, any new person can understand it easily. I would like you to keep writing like this and share your information with us. cotton bed sheets , where to buy cheap comforter sets

    ReplyDelete

Related Posts with Thumbnails