Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp jsf选择一个菜单获取所选项目_Jsp_Jsf_Selectonemenu - Fatal编程技术网

Jsp jsf选择一个菜单获取所选项目

Jsp jsf选择一个菜单获取所选项目,jsp,jsf,selectonemenu,Jsp,Jsf,Selectonemenu,我在jsf上做一个项目,我使用一个选择菜单,允许用户选择一个项目,然后按submit。当点击按钮时,jsf调用bean,它应该会收到选择的值,但我总是得到一个空结果。我看了其他帖子,我想我和其他人的答案很接近,我想这只是一个小细节,是缺少的 这是我的密码: <h:selectOneMenu id="sel1" value="#{foo.bankName}"> <f:selectItems value="#{foo.bankNameMap}

我在jsf上做一个项目,我使用一个选择菜单,允许用户选择一个项目,然后按submit。当点击按钮时,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);
    }
公共字符串getBankName(){
返回银行名称;
}
公共银行名称(字符串银行名称){
this.bankName=银行名称;
}
私有静态映射库名映射;
公共映射getBankNameMap(){
返回bankNameMap;
}
@施工后
公共void init(){
initiateDropDown();
} 
public void initiateDropDown(){
bankNameMap=新建LinkedHashMap();
银行名称映射。put(“aaaa”、“aaaa”);
}
单击按钮时调用的public void submit(){//方法
系统输出打印项次(“项目”+银行名称);
}
输出:

项目


提前感谢

您创建了一个方法
initiateDropDown()来填充映射,但您从未调用过它。我想您不能从
组件中选择
aaaa
,因为它在map中不存在。你的地图是空的。另外,您的
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);
}
publicmap getBankNameMap(){
initiateDropDown();
返回bankNameMap;
}
单击按钮时调用的public void submit(){//方法
系统输出打印项次(“项目”+银行名称);
}
JSF看起来相当不错。只需确保元素位于
中即可



对不起,我忘了输入构造函数代码。。jsf初始化时调用构造函数,构造函数调用initiateDropDown并填充下拉列表。。我想我已经传达了这样一个想法,下拉菜单起作用了问题是将所选项目传递给bean我将编辑postNo这是我的结构到selectone菜单:
selectOneMenu。。我需要一个h:form吗?我在选择菜单周围放了一个h:form,但没有什么特别的事情发生。事实上,表单就是问题所在。。我刚刚添加了它,现在它工作了,谢谢!不客气:)。您应该始终在JSF页面中使用它。是负责允许将视图提交回服务器的组件。的可能重复
<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>