java - 如何在 jsf selectOneMenu 中访问选定的标签和选定的描述,其中 selectOneMenu 与 javax.faces.model.SelectItem 对象绑定(bind)?

标签 java jsf jsf-2

这是针对 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/

相关文章:

java - 在 Hibernate Search 中运行时选择分析器

java - Openbravo ERP 3 中的 HTTP 状态 500 错误

java - WatcherThread如何调用JVM监控例程?

java - 为不可变类实现 clone()

javascript - 设置h的值:outputText using Javascript

javascript - 如何使用 JSF 在输入文本中授权逗号和点

jsf - 新手 JSF 问题 - 如何实现这种布局?

hibernate - JSF View 不从数据库中恢复数据

java - 使 PrimeFaces 数据表默认可编辑

eclipse - 面向2.1版的faces-config.xml xsd错误