我如何从selectCheckboxMenu获取类值?

时间:2015-07-07 15:10:24

标签: jsf primefaces

我有一个,我希望在bean中获取所选的值。但是当我从菜单中选择一个项目时,我收到的值是一个字符串,表示来自CategorizationBean的类型字段。我只是想从表中选择一个项目,以获得bean中的整个CategorizationBean结构。

任何想法?

1 个答案:

答案 0 :(得分:1)

我认为你错过了使用bean列表,我使用这个例子并且它可以工作:

<p:selectCheckboxMenu id="slctRdBtn"
                                value="#{yourBean.compLovDtgrid}"
                                converter="compLovDtgridConverter">
                                <f:selectItems
                                    value="#{yourBean.listCompLovDtgrid}"
                                    var="rdbtn" itemLabel="#{rdbtn.vjlrLibelleRep}"
                                    itemValue="#{rdbtn}" />
                            </p:selectCheckboxMenu>

和转换器:

@FacesConverter(forClass=CompLovDtgrid.class , value="compLovDtgridConverter")
public class CompLovDtgridConverter implements Converter{
@Override
public String getAsString(FacesContext context, UIComponent component, Object value)
{
    return (value instanceof CompLovDtgrid) ? ((CompLovDtgrid) value).getVjlrCodeRep() : null;
}
@Override
public Object getAsObject(FacesContext context, UIComponent component,String value)
{
    if(value == null)
        return null;

YourBean data = context.getApplication().evaluateExpressionGet(context, "#{yourBean}", YourBean.class);

for(CompLovDtgrid compLovDtgrid : data.getListCompLovDtgrid())
{
    if(compLovDtgrid.getVjlrCodeRep().equals(value))
        return compLovDtgrid;
}

throw new ConverterException(new FacesMessage(String.format("Cannot convert %s to CompLovDtgrid", value)));}}

对于列表,我使用:

public List<CompLovDtgrid> getListCompLovDtgrid() 
    {
        return listCompLovDtgrid;
    }

public void setListCompLovDtgrid(List<CompLovDtgrid> listCompLovDtgrid) {
    this.listCompLovDtgrid = listCompLovDtgrid;
}