工藝

2013-10-07 52 views
0

動態SelectOneListBox驗證失敗我有一個selectOneListBox和一個按鈕工藝

<p:selectOneListbox id="somelistBox" value="#{bean.selectedItem}" styleClass="listBox"> 
    <f:selectItems value="#{bean.list}" var="item" itemValue="#{item}" itemLabel="#{preparer.prepare(item)}"/> 
</p:selectOneListbox> 
<p:commandButton id="somebutton" process="@(.listBox)" update="@(.listBox)"/> 

和豆

@Component 
public void class Bean 
{ 
    private List<Item> list; 

    private Item selectedItem; 

    public List<Item> getList() 
    { 
     return list; 
    } 

    public void getSelectedItem() 
    { 
     return selectedItem; 
    } 

    public void setSelectedItem(Item selectedItem) 
    { 
     this.selectedItem = selectedItem; 
    } 
} 

然而,當我按下按鈕確認阿賈克斯後期間selectOneListBox失敗。從我讀過的內容中可以發現,當你試圖用錯誤類型的對象設置bean中的綁定對象時,但是我的selectOneListBox包含一個「Items」列表,而值爲selectedItem,它也是一個「Item」所以我不明白我要去哪裏錯了。

+0

我以前從來沒有見過像「@(。listBox)」這樣的東西。當你只使用'process =「somelistBox」'時它是否工作?另外:你能告訴我們你得到的確切的錯誤嗎? – noone

+0

其選擇器; selectOneListBox具有「listBox」作爲其styleClass –

+0

我沒有得到一個錯誤,按鈕上的動作不起作用,並且列表框發出紅色光;該帖子然後顯示驗證失敗 –

回答

0

我認爲我的問題是由於誤解了瀏覽器的工作原理而產生的。他們不瞭解java對象,只是字符串,所以試圖在瀏覽器和服務器之間前後傳遞對象是不可能的。相反,我已經將項目值改變爲條目的ID,然後不得不檢索與數據庫調用後端這個對象,即

<p:selectOneListbox id="somelistBox" value="#{bean.selectedItem}" styleClass="listBox"> 
    <f:selectItems value="#{bean.list}" var="item" itemValue="#{item.id}" itemLabel="#{preparer.prepare(item)}"/> 
</p:selectOneListbox> 

,然後在後端的一些調用來獲取對象返回從ajax文章傳遞的id(我選擇在Converter中執行此操作)。