Jsf primefaces selectitem onclick事件

Jsf primefaces selectitem onclick事件,jsf,primefaces,Jsf,Primefaces,我需要一些帮助。我正在为jsf和primefacesweb应用程序开发,当我从下拉列表中选择以获取所选值时,遇到了一个问题,但在操作中得到了一个空字符串 这是我的selectOneMenu标签的xhtml代码 <p:selectOneMenu value="#{tanAllot.batchName}" id="batchName"> <f:selectItem itemLabel="Select Batch" itemValue="" /> <f:s

我需要一些帮助。我正在为jsfprimefacesweb应用程序开发,当我从下拉列表中选择以获取所选值时,遇到了一个问题,但在操作中得到了一个空字符串

这是我的
selectOneMenu
标签的xhtml代码

<p:selectOneMenu value="#{tanAllot.batchName}" id="batchName">
    <f:selectItem itemLabel="Select Batch" itemValue="" />
    <f:selectItems value="#{tanAllot.batchList}" />
    <p:ajax event="change" listener="#{tanAllot.test}" />
</p:selectOneMenu>
我的问题是,当我从
p:selectOneMenu
标记中选择一个值时,默认方法应该在操作中调用并检索该值,但我得到的是一个空字符串


有人能帮我解决这个问题吗?

考虑一下批处理列表的性质。batchList必须是字符串列表。使用itemValue属性(在f:selectItem中)可能会有所帮助

看看我的例子。它使用省的列表(“省”类的实例)。但是,我只需要“id”值,它是一个“Long”;如果我想要整个选定的省作为“省对象”,我需要一个“转换器”。(示例非常有效):

检查您的代码并随时询问。祝你好运

private String batchName;

public String getBatchName() {
    return batchName;
}

public void setBatchName(String batchName) {
    this.batchName = batchName;
}

public void test() {
    System.out.println(batchName);
}
<p:selectOneMenu id="provinceField" 
        value="#{addAddressesMB.formAddress.provinceId}">
    <f:selectItem itemLabel="Select One" itemValue="" />
    <f:selectItems value="#{addAddressesMB.provinceList}" var="i"
        itemLabel="#{i.description}" itemValue="#{i.id}" />
        <p:ajax update=":formId:cityField"
            listener="#{addAddressesMB.provinceChangeHandler}" />
</p:selectOneMenu>
public void provinceChangeHandler() {
    //do whatever you want with formAddress.provinceId
    System.out.println(this.formAddress.provinceId);
    //In my case I filter the cities according to the selected provinceId
    // After that I update the cities dropdown(cityField) in the view.
}