1

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

问题是,只有当绑定到下拉字段的字段的实际值是用作value.

以下作品(如果Bean.field是 type 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字段的字符串保存在那里。

有没有很好的方法来处理这个?

4

1 回答 1

0

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

<p:selectOneMenu value="#{bean.field}" var="x" converter="yourconverterid">
于 2012-07-09T15:30:37.083 回答