这是针对 JSF 2.0 的(请注意 - 这是 mojerra 实现,我没有使用 Icefaces、myfaces 等)
假设我的表单中只有一个下拉列表,并且该下拉列表绑定(bind)了一个存储值、标签和描述的 SelectItems 对象列表。
在我的值更改 actionlistener 事件中,我如何访问选定的值、标签和描述。我只能访问选定的值吗?
示例代码-
在我的 xhtml 中 - 下拉菜单是 -
<h:selectOneMenu onchange="submit()" valueChangeListener="#{person.changeDD}" value="#{person.selectedValue}">
<f:selectItems value="#{person.lists}"></f:selectItems>
</h:selectOneMenu>
其中 person 是 bean 的名称
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
}
}
请帮忙
最佳答案
In my Value change actionlistener event how can I access the selected value,label and description. I am able to access only the selected value?
这确实也只是 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);
// ...
}
}
关于java - 如何在 jsf selectOneMenu 中访问选定的标签和选定的描述,其中 selectOneMenu 与 javax.faces.model.SelectItem 对象绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670326/