我正在使用Primefaces SelectOneMenu(http://www.primefaces.org/showcase-labs/ui/selectOneMenu.jsf)和演示中描述的“自定义内容”版本。Primefaces中的自定义内容selectOneMenu没有持续对象
问题是只有在绑定到下拉字段的字段的实际值是用作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>
下不起作用(String
型Bean.field
):
<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
字段的字符串保存在那里。
有没有一种很好的方法来处理这个问题?
尝试使bean.field的getter/setter的类型为Object例如setField(Object value),Object getField() – BestPractices 2012-07-09 13:45:57
这与'Bean'是一个JPA实体并且'String'类型反映在相应数据库列中的事实相冲突。 – 2012-07-09 14:07:28
我通过使用实际的对象作为'bean.field'的类型来解决这个问题。但我不保存序列化,而是使用'@ OneToOne'代替。这个工作,虽然现在我有很多条目填写我的“项目”表。无论如何,现在可以“关闭”了。 – 2012-07-10 10:14:01