-
1. Re: <rich:pickList>
rui278 Jul 23, 2012 7:46 AM (in response to rui278)Aparently the code did not load into the message(i used the inser raw html. guess that's not what it was for), so here it goes again:
<h:form>
<rich:pickList value="#{UpperTrayBean.ASRselected}" sourceCaption="Available ASR Nodes" targetCaption="Selected ASR Nodes"
listWidth="165px" listHeight="100px" orderable="true">
<f:selectItems value="#{UpperTrayBean.getASR()}" var="asr" itemValue="#{asr}" itemLabel="#{asr.getNodenumber()}" />
</rich:pickList>
</h:form>
<h:form>
<a4j:commandButton value = "Submit" action = "#{UpperTrayBean.setOn(true)}" style = "width:75px
<a4j:commandButton value = "Refresh" action = "#{UpperTrayBean.setOn(true)}" reRender = "dataTable" style = "width:75px"/>
</h:form>
-
2. Re: <rich:pickList>
rui278 Jul 23, 2012 7:48 AM (in response to rui278)I added a converter after the <f:selectsitems> and removed the itemLabel proprety.
Its still the same problem. but i think the proble is in the converter, because now, instead of the name of the ASR object, in the label, it apears its toString()representation...
is there something wrong in the converter?
@FacesConverter("ASRConverter")
public class ASRConverter implements Converter {
@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object asr) {
if (asr == null) return "No Object";
return ((ASR) asr).getNodenumber();
}
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
for( int n=0; n< UpperTrayBean.getasr().size(); n++){
if (UpperTrayBean.getasr().get(n).getNodenumber().equals(arg2)){
return UpperTrayBean.getasr().get(n);
}
}
return null;
}
}
-
3. Re: <rich:pickList>
ealonso04 Jul 23, 2012 10:33 AM (in response to rui278)Hi Rui!
I think you should have the commandButtons and the pickList inside de same form. Why don't you try that?
Regards!
-
4. Re: <rich:pickList>
rui278 Jul 23, 2012 11:06 AM (in response to ealonso04)Hi Ernesto.
Unfortunatly it didn't help.
But thanks for the reply!
-
5. Re: <rich:pickList>
ealonso04 Jul 23, 2012 11:38 AM (in response to rui278)Why did you remove the itemLabel? If you use the itemLabel, you must to set a property of the object (item) specified in the var property, not a getter method.
I think you should change your itemLabel to itemLabel="#{asr.nodenumber}".
Check out my pickList:
<h:form id="frm">
<rich:pickList value="#{workListBean.selectedColumns}" sourceCaption="Columnas disponibles" targetCaption="Lista de Trabajo"
listWidth="165px" listHeight="100px" orderable="true" switchByDblClick="true"
style="text-align: left; color: #cc0033"
onremoveitems="alert('Hello');" id="pick"
ontargetclick="test(event);" >
<f:selectItems value="#{workListBean.availableColumns}" var="column" itemValue="#{column}" itemLabel="#{column.label}" />
<f:converter converterId="ColumnsConverter" />
</rich:pickList>
<br />
<div align="right">
<h:commandButton value="Guardar" action="#{workListBean.saveCustomization}" />
</div>
</h:form>
And my converter:
@FacesConverter("ColumnsConverter")
public class ColumnsConverter implements Converter{
@ManagedProperty(value="#{workListBean}")
private WorkListBean workListBean;
public Object getAsObject(FacesContext facesContext, UIComponent component, String s) {
for (WorkList column: getColumnsList(facesContext)) {
if (column.getLabel().equals(s)) {
return column;
}
}
return null;
}
public String getAsString(FacesContext facesContext, UIComponent component, Object o) {
if (o == null) return null;
return ((WorkList) o).getLabel();
}
private List<WorkList> getColumnsList(FacesContext facesContext) {
return getWorkListBean(facesContext).getAvailableColumns();
}
/**
* @return the workListBean
*/
public WorkListBean getWorkListBean(FacesContext facesContext) {
if (workListBean == null) {
ELContext elContext = facesContext.getELContext();
workListBean = (WorkListBean) elContext.getELResolver().getValue(elContext, null, "workListBean");
}
return workListBean;
}
/**
* @param workListBean the workListBean to set
*/
public void setWorkListBean(WorkListBean workListBean) {
this.workListBean = workListBean;
}
}
I hope this can help you!
Regards!
-
6. Re: <rich:pickList>
rui278 Jul 23, 2012 12:58 PM (in response to ealonso04)Hi Ernesto.
Your solution worked perfectly.
The problem was that my converter didn't have a Facescontext part.
Thank you!
-
7. Re: <rich:pickList>
ealonso04 Jul 23, 2012 1:12 PM (in response to rui278)You're welcome! I'm glad you found the solution.
Regards!
-
8. Re: <rich:pickList>
rui278 Jul 24, 2012 12:42 PM (in response to ealonso04)Hi Ernesto.
So i now took it up a notch and now have a list inside the asr class inside the Bean class, so i was wondering how the converter would go(the getAsObject method)...
I tried it like this:
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {List<ASR> lista = getUpperTrayBean(arg0).getAsr();
for (ASR asr : lista){
for(Cards card : asr.getCards()){
if (card.getSlot().equals(arg2)) {
return card;}
}
}
return null;
}Does that make sense at all?