0

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

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>

这是我在动作类中使用的方法

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标签中选择一个值时,默认方法应该在操作中调用并检索该值,但我得到一个空字符串。

谁能帮我解决这个问题?

4

1 回答 1

0

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

检查我的例子。它使用省份列表(“Province”类的实例)。但是我只需要“长”的“id”值;如果我想将整个选定的省份作为“省份对象”,我需要一个“转换器”。(示例完美运行):

<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.
}

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

于 2013-07-05T19:06:22.453 回答