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