【问题标题】:jsf select one menu get the selected itemjsf select one menu 获取选中项
【发布时间】:2017-07-06 15:04:10
【问题描述】:

我正在 jsf 上做一个项目,我正在使用一个选择一个菜单,允许用户选择一个项目,然后他们按下提交。当单击按钮时,jsf 调用 bean,它应该接收选择的值,但我总是得到一个空的结果。我看到了其他帖子,我想我和其他人的答案很接近,我想这只是一个缺少的小细节

这是我的代码:

        <h:selectOneMenu id="sel1" value="#{foo.bankName}">
            <f:selectItems value="#{foo.bankNameMap}" />
        </h:selectOneMenu>

<h:commandButton id="validate" value="Submit"
                            action="#{foo.submit}"/>

现在在 bean 上:

 public String getBankName() {
            return bankName;
        }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    private static Map<String,Object> bankNameMap;

    public Map<String,Object> getBankNameMap() {
        return bankNameMap;
    }

    @PostConstruct
    public void init() {
            initiateDropDown();
     } 

     public void  initiateDropDown() {
            bankNameMap = new LinkedHashMap<String,Object>();
             bankNameMap.put("aaaa" , "aaaa");
     }

    public void submit(){ //method called when clicked on the button
          System.out.println("item " +bankName);
    }

输出:

项目

提前致谢

【问题讨论】:

标签: jsp jsf selectonemenu


【解决方案1】:

您创建了一个方法initiateDropDown(); 来填充地图,但您从未调用它。我想你不能从&lt;h:selectOneMenu/&gt; 组件中选择aaaa,因为它在地图中不存在。你的地图是空的。此外,您的 submit() 方法缺少返回类型。您需要设置方法的返回类型以传递编译时间。例如public void submit();

让现有代码工作的最简单方法应该是:

public Map<String, Object> getBankNameMap() {
    initiateDropDown();
    return bankNameMap;
}

public void submit() { // method called when clicked on the button
    System.out.println("item " + bankName);
}

JSF 看起来不错。只需确保您的元素位于 &lt;h:form&gt; 中即可。

<h:body>
    <h:form id="myForm">
        <h:selectOneMenu id="sel1" value="#{foo.bankName}">
            <f:selectItems value="#{foo.bankNameMap}" />
        </h:selectOneMenu>
        <h:commandButton id="validate" value="Submit" action="#{foo.submit}"/>
    </h:form>
<h:body>

【讨论】:

  • 对不起,我忘记放置构造函数代码.. jsf 初始化时调用构造函数,构造函数调用initialDropDown 并填充下拉列表.. 我以为我已经传达了下拉列表有效的想法问题是将所选项目传递给 bean 我将编辑帖子
  • 不,这是我选择一个菜单的结构:
    selectOneMenu
    body> .. 我需要一个 h:form 吗?
  • 我在选择菜单周围放了一个 h:form,但没有发生什么特别的事情
  • 它是真的,表格是问题..我刚刚添加它,现在它可以工作了,谢谢!
  • 不客气 :) 。您应该始终在您的 JSF 页面中使用它。
    是负责允许 将视图提交回服务器的组件。
  • 猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2018-03-14
    • 2020-11-29
    相关资源
    最近更新 更多