Jsf 从SelectCheckBox菜单中检索类值

Jsf 从SelectCheckBox菜单中检索类值,jsf,primefaces,Jsf,Primefaces,我有一个函数,我想在bean中获取所选的值。但是我得到的价值 当我从菜单中选择一个项目时,它是一个字符串,表示分类bean中的类型字段。 我只想在从表中选择一个项时,得到bean中的整个CategorizationBean结构 这是xhtml页面中的代码片段: <p:selectCheckboxMenu label="Categorization" value="#alertMB.selectedCategories}"

我有一个函数,我想在bean中获取所选的值。但是我得到的价值 当我从菜单中选择一个项目时,它是一个字符串,表示分类bean中的类型字段。 我只想在从表中选择一个项时,得到bean中的整个CategorizationBean结构

这是xhtml页面中的代码片段:

<p:selectCheckboxMenu label="Categorization"  
                      value="#alertMB.selectedCategories}" 
                      converter="com.converter.CategoryConverter">

    <f:selectItems value="#{alertMB.categoryDomainEntry}"
                   var="category"
                   itemLabel="#{category.type}"
                   itemValue="#{category}"/> 
</p:selectCheckboxMenu>
来自bean的代码片段:

public List<CategorizationBean> getSelectedCategories() {
        return selectedCategories;
}

public void setSelectedCategories(List<CategorizationBean> selectedCategories) {
    this.selectedCategories = selectedCategories;
}

public class CategorizationBean implements Serializable{
    private String type;
    private long id;

我认为您在使用bean列表时错过了,我使用了这个示例,它可以工作:

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

对于列表,我使用:

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

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

您的转换器看起来像com.converter.CategoryConverter吗?它是否充分接受并返回正确的类型?在这个表达式value=alertMB.selectedCategories}中,符号后面缺少一个{的无效语法。我避免将其视为一个输入错误。它确实是一个输入错误。转换器如下所示:覆盖公共对象getAsObjectFacesContext上下文,UIComponent组件,字符串值{//code}重写公共字符串getAsStringFacesContext上下文、UIComponent、对象值{return CategorizationBeanvalue.getType;问题是,如果我将getAsObject函数值参数从String更改为CategorizationBean,我将无法再重写它。@AlexStratulat请将您的转换器包括在问题中,那么您的转换器到底出了什么问题?您是否有一些错误或无法理解你不知道为什么它不起作用
public List<CompLovDtgrid> getListCompLovDtgrid() 
    {
        return listCompLovDtgrid;
    }

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