2015-04-14 89 views
1

我想在裏面使用<p:selectCheckBoxMenu><f:selectItems>p:selectCheckboxMenu衝突標籤和f:selectItems

如你所知,label屬性爲<p:selectCheckBoxMenu>是強制性的,但我想用<f:selectItems>itemLabel屬性,它希望獲得itemLabel<p:selectCheckBoxMenu>的標籤了。

我的代碼:

<p:selectCheckboxMenu id="Menu" 
         value="#{Controller.myList}" 
         label="Choose Item" 
         filter="true" 
         filterMatchMode="startsWith" 
         style="width:220px;" 
         panelStyle="width:300px"> 

    <f:selectItems value="#{Controller.AllItemsList}" var="p" itemValue="#{p.id}" /> 
    <f:converter converterId="myConverter" /> 
    <f:ajax event="change" /> 
</p:selectCheckboxMenu> 

我的錯誤:

驗證錯誤:價值選擇項目是無效的!

+0

嘗試使用了'P中的屬性'converter':selectCheckboxMenu'而不是使用'F:converter' – Pellizon

+0

@Pellizon:感謝,但它並沒有解決這個問題:( –

回答

1

<p:selectCheckboxMenu預計會收到您在value屬性中定義的相同值的選定選項。

因此,如果<p:selectCheckboxMenu的值是List<ObjectXY><f:selectItems>itemValue必須是ObjectXY

你有密切的,但問題是,你所定義的<f:selectItems>#{p.id},當你的組件的itemValue期望一個ObjectXY類型的對象,而不是一個id。

下面是你應該改變什麼:

<f:selectItems value="#{Controller.AllItemsList}" var="p" itemValue="#{p}" itemLabel="#{p.id}" /> 
+0

@Pelizon:沒有抱歉,當我把它自己的對象它自己的項目價值(itemValue =#{p})它只是返回它的字符串到轉換器,而不是對象,我認爲它是一個缺陷的primefaces。因爲我的代碼唯一的問題是,primefaces會返回組件的標籤作爲其成員的第一項。無論如何謝謝:) –