rich:dataList not being rerendered
gibiman Jun 16, 2008 2:36 PMHi ,
<h:form id="adaugareProdusForm"> <rich:pickList value="#{pickListBean.result}"> <f:selectItems value="#{pickListBean.produse}" /> <a4j:support event="onlistchanged" reRender="result,items" /> </rich:pickList> <a4j:commandButton value="reRender" reRender="result"></a4j:commandButton> <h:outputText id="items" value="#{pickListBean.items} Options Choosen"></h:outputText> <rich:dataList id="result" value="#{pickListBean.produseSelectate}" var="pickList" rendered="#{pickListBean.items>0}" styleClass="pickListConfirmation"> <h:outputText value="#{pickList.denumire}" /><f:verbatim> | </f:verbatim> <h:outputText value="#{pickList.cod}" /><f:verbatim> | </f:verbatim> <h:outputText value="#{pickList.descriere}" /><f:verbatim> | </f:verbatim> </rich:dataList> <a4j:outputPanel ajaxRendered="true"> <h:messages/> <rich:messages></rich:messages> </a4j:outputPanel> </h:form>
My problem is that after i add something to the list , although the onlistchanged event gets triggered the datalist does not get updated .
Worth mentioning is that the fact that the #{pickList.produseSelectate} returns a List , not a String . Could this have anything to do with it ?
my pickListBean is:
public class PickListBean { private static final Logger logger = Logger.getLogger(PickListBean.class); private List<String> result; private List<SelectItem> produse; private List<Produs> listaProduse; private List<Produs> produseSelectate; public PickListBean() { } public List<String> getResult() { return result; } public void setResult(List<String> result) { this.result = result; } public Integer getItems() { if (result == null) { return 0; } logger.debug("Size :"+result.size()); return result.size(); } public List<SelectItem> getProduse() { if (produse == null) { Session s = HibernateUtil.getCurrentSession(); listaProduse = (List<Produs>) s.createQuery("from Produs").list(); produse = new ArrayList<SelectItem>(); for (Produs p : listaProduse) { produse.add(new SelectItem(p.getCod(), p.getDenumire())); } } logger.debug("Returning :" + produse); return produse; } public void setProduse(List<SelectItem> f) { this.produse = f; } public List<Produs> getProduseSelectate(){ produseSelectate = new ArrayList<Produs>(); for ( Produs p : listaProduse){ if (result != null && result.contains(p.getCod())){ produseSelectate.add(p); } } logger.debug("getProduseSelctate :"+produseSelectate); return produseSelectate; } public void setProduseSelectate(List<Produs> s){ this.produseSelectate = s; } }
Any ideas would be highly apreciated