Hello,
I want to update dynamically a part of my page that take account of the selected values of a pickList.
Thus I am using a function plugged to @onadditems and @onremoveitems attributes.
When the function is called, the selected values of the pickList contains the previous selected values.
Is it the good to perform what I want to do ?
Here is a simple example to reproduce the issue
<h:form id="frm">
<a4j:jsFunction name="processPickList" execute="pick" />
<rich:pickList id="pick"
listWidth="250px"
listHeight="100px"
styleClass="pointerCursor"
sourceCaption="Available Numbers"
targetCaption="Selected Ones"
onadditems="processPickList()"
onremoveitems="processPickList()"
value="#{pickListBean.selectedNumbers}" >
<f:selectItems value="#{pickListBean.availableNumbers}" var="num" itemValue="#{num}" itemLabel="#{num}"/>
</rich:pickList>
<a4j:outputPanel id="autoRendered" ajaxRendered="true">
<rich:dataTable value="#{pickListBean.selectedNumbers}" var="n" noDataLabel="NoSelection" >
<rich:column >
<f:facet name="header">Selected Numbers</f:facet>
<h:outputText value="#{n}" />
</rich:column>
</rich:dataTable>
</a4j:outputPanel>
</h:form>
package fr.alladin.common.web.bean.module.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.faces.bean.ManagedBean;
@ManagedBean
public class PickListBean {
public List<Integer> availableNumbers = new ArrayList<Integer>();
public List<Integer> selectedNumbers = new ArrayList<Integer>();
public PickListBean() {
}
public List<Integer> getAvailableNumbers() {
if (availableNumbers.isEmpty()) {
availableNumbers.addAll(Arrays.asList(new Integer[] { 1, 2, 3, 4, 5 }));
}
return availableNumbers;
}
public void setAvailableNumbers(List<Integer> availableNumbers) {
this.availableNumbers = availableNumbers;
}
public List<Integer> getSelectedNumbers() {
return selectedNumbers;
}
public void setSelectedNumbers(List<Integer> selectedNumbers) {
this.selectedNumbers = selectedNumbers;
}
}
Hi,
use the "change" event instead, the add/remove items are meant for client side handling.