2014-08-29 66 views
0

我在JSFJSF訪問將selectedItem

<h:selectOneListbox value="#{category.selectedCategoryId}" onchange="submit()" 
     valueChangeListener="#{category.changeFunction}"> 
     <f:selectItems value="#{category.categoryValues}" var="cat" 
     itemLabel="#{cat.categoryName}" itemValue="#{cat.categoryId}" /> 
</h:selectOneListbox> 

繼實施了以下selectOneListBox是更改偵聽

public void changeFunction(ValueChangeEvent e) { 
    System.out.println(e.getNewValue().toString()); 
} 

代碼正如你所看到的,我只能訪問所選項目的項目值在onchange函數中。我想訪問itemValue只是其中一部分的對象。這怎麼可能?

回答

0

您需要設置選擇項的值是全品類,是這樣的:

<h:selectOneListbox value="#{category.selectedCategoryId}" onchange="submit()" 
    valueChangeListener="#{category.changeFunction}"> 
    <f:selectItems value="#{category.categoryValues}" var="cat" 
    itemLabel="#{cat.categoryName}" itemValue="#{cat}" converter="catConverter"/> 
</h:selectOneListbox> 

您還需要一個自定義的轉換器,它可以讓一個類別獲得控制器和視圖之間的序列化。

@FacesConverter("catConverter") 
public class CategoryConverter implements Converter { 
... 
}