我正在使用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
字段的字符串。
有没有一种很好的方法可以解决这个问题?
答案 0 :(得分:0)
使用Converter将所选菜单项(bt.value)的值转换为与p:selectOneMenu(bean.field)绑定的支持bean方法所期望的值。
<p:selectOneMenu value="#{bean.field}" var="x" converter="yourconverterid">