簡體   English   中英

如何在jsf selectOneMenu中訪問選定的標簽和選定的描述,其中selectOneMenu與javax.faces.model.SelectItem對象綁定?

[英]How to access the selected label and selected description in jsf selectOneMenu where selectOneMenu is bound with javax.faces.model.SelectItem objects?

這是針對JSF 2.0的(請注意-這是mojerra的實現,我沒有使用Icefaces,myfaces等。)

考慮到我的表單中只有一個下拉列表,並且該下拉列表與存儲值,標簽和描述的SelectItems對象列表綁定。

在我的值更改操作監聽程序事件中,如何訪問選定的值,標簽和描述。 我只能訪問所選的值嗎?

示例代碼-

在我的xhtml中-下拉列表是-

<h:selectOneMenu onchange="submit()" valueChangeListener="#{person.changeDD}" value="#{person.selectedValue}">
    <f:selectItems value="#{person.lists}"></f:selectItems>
</h:selectOneMenu>

人是豆的名字

ModelBean-

@ManagedBean(name="person")
@SessionScoped
public class PersonBean implements Serializable{

private String selectedValue;

private List<SelectItem> lists=new ArrayList<SelectItem>(); 
public PersonBean() {
        lists=new ArrayList<SelectItem>();
        lists.add(new SelectItem("1","India","desc1"));
        lists.add(new SelectItem("2","canada","desc2"));
        lists.add(new SelectItem("3","america","desc3"));
    }
//getters and setters


public void changeDD(ValueChangeEvent vce) throws IOException{
        System.out.println("in value change");
        System.out.println("New value-->"+vce.getNewValue().toString());
//I have access only to the selected value and not to the description and label

    }
}   

請幫助

在我的值更改操作監聽程序事件中,如何訪問選定的值,標簽和描述。 我只能訪問所選的值嗎?

實際上,這也只是HTML <select>元素發送的內容。 您需要自己維護可用值和SelectItem的映射。

@ManagedBean(name="person")
@SessionScoped
public class PersonBean implements Serializable {

    private String selectedValue;
    private Map<String, SelectItem> availableValues;
    private List<SelectItem> lists; 

    public PersonBean() {
        availableValues = new LinkedHashMap<String, SelectItem>();
        availableValues.put("1", new SelectItem("1", "India", "desc1"));
        availableValues.put("2", new SelectItem("2", "canada", "desc2"));
        availableValues.put("3", new SelectItem("3", "america", "desc3"));
        lists = new ArrayList<SelectItem>(availableValues.values());
    }

    public void changeDD(ValueChangeEvent event) {
        String selectedValue = (String) event.getNewValue();
        SelectItem selectedItem = availableItems.get(newValue);
        // ...
    }

}

您可以通過為它們添加變量並為變量創建getter和setter來實現

在你的豆為。 在您的bean中創建的描述

 
 
 
  
   private String description; public String getDescription(){ return description; } public void setDescription(String desc){ description = desc; }
 
  

同樣,對於任何變量

對不起,我誤會了

你可以做

 //String selectedvalue SelectItem selectedValue;//create getters setter public void changeDD(ValueChangeEvent vce) throws IOException{ System.out.println("in value change"); System.out.println("New value-->"+vce.getNewValue().toString()); String description = selectedValue.getDescription(); } } 

最好的方法是將Custom對象用作SelectItems的值,並為其實現Custom Converter:
http://balusc.blogspot.com/2007/09/objects-in-hselectonemenu.html

在JSF 2中,您可以像下面這樣輕松實現自定義轉換器:
http://www.mkyong.com/jsf2/custom-converter-in-jsf-2-0/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM