2014-08-29 35 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 { 
... 
}