jsf select 一个菜单得到 selected 项
jsf select one menu get the selected item
我正在 jsf 上做一个项目,我正在使用一个 select 菜单,允许用户选择一个项目,然后他们按提交。单击按钮时,jsf 调用 bean,它应该接收值 selected,但我总是得到一个空结果。我看到了其他人 post,我想我和其他人的答案很接近,我想这只是遗漏了一个小细节
这是我的代码:
<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);
}
输出:
项目
提前致谢
您创建了一个方法 initiateDropDown();
来填充地图,但您从未调用过它。我想你不能 select aaaa
来自 <h:selectOneMenu/>
组件,因为它不存在于地图中。你的地图是空的。此外,您的 submit()
方法中缺少 return 类型。您需要设置 return 类型的方法来传递编译时间。例如 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 看起来不错。只需确保您的元素在 <h:form>
.
中
<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 上做一个项目,我正在使用一个 select 菜单,允许用户选择一个项目,然后他们按提交。单击按钮时,jsf 调用 bean,它应该接收值 selected,但我总是得到一个空结果。我看到了其他人 post,我想我和其他人的答案很接近,我想这只是遗漏了一个小细节
这是我的代码:
<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);
}
输出:
项目
提前致谢
您创建了一个方法 initiateDropDown();
来填充地图,但您从未调用过它。我想你不能 select aaaa
来自 <h:selectOneMenu/>
组件,因为它不存在于地图中。你的地图是空的。此外,您的 submit()
方法中缺少 return 类型。您需要设置 return 类型的方法来传递编译时间。例如 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 看起来不错。只需确保您的元素在 <h:form>
.
<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>