Primefaces中的CustomContent selectOneMenu没有持久化对象

时间:2012-07-09 13:36:55

标签: jsf primefaces selectonemenu

我正在使用Primefaces SelectOneMenu(http://www.primefaces.org/showcase-labs/ui/selectOneMenu.jsf)和“自定义内容”版本,如演示中所述。

问题是只有当字段的实际值(与下拉字段绑定)属于用作value的对象类型时,列才有效。

以下作品(如果Bean.field类型为SelectObject):

<p:selectOneMenu value="#{bean.field}"
    var="x">
    <f:selectItems
        value="#{valuesBean.getSelectItems()}" var="bt"
        itemLabel="#{bt.label}" itemValue="#{bt}" />
    <p:column>
        <h:outputText
            value="#{x.value}" />
    </p:column>
    <p:column>
        <h:outputText value="xyz" />
    </p:column>
</p:selectOneMenu>

以下内容不起作用(Bean.field类型String):

<p:selectOneMenu value="#{bean.field}"
    var="x">
    <f:selectItems
        value="#{valuesBean.getSelectItems()}" var="bt"
        itemLabel="#{bt.label}" itemValue="#{bt.value}" />
    <p:column>
        <h:outputText
            value="#{x.value}" />
    </p:column>
    <p:column>
        <h:outputText value="xyz" />
    </p:column>
</p:selectOneMenu>

在第一个版本中,xyz显示为第二列,而第二个版本则不显示。我遇到的问题是现在我需要在数据库中保存类型为SelectObject的对象,尽管我也可以在那里保存value字段的字符串。

有没有一种很好的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用Converter将所选菜单项(bt.value)的值转换为与p:selectOneMenu(bean.field)绑定的支持bean方法所期望的值。

<p:selectOneMenu value="#{bean.field}" var="x" converter="yourconverterid">