我正在使用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