【发布时间】:2013-03-12 10:05:25
【问题描述】:
我正在尝试从代码中获取 primefaces SelectOneMenu 所选项目的名称:
这是我的 SelectOneMenu:
FacesContext.getCurrentInstance().getViewRoot().findComponent("formMain:somSelect");
找到了组件。 我已经尝试将它转换为 SelectOneMenu,但我不会得到像“getSelectedValue()”这样的方法,该方法写在“客户端 api”的用户手册中。 我也试过了:
FacesContext.getCurrentInstance().getViewRoot().findComponent("formMain:somSelect").getAttributes().get("label");
但这会返回 NPE。
<p:selectOneMenu id="somSelect" value="#{userManagerBean.somValue}" valueChangeListener="#{userManagerBean.somListener}" styleClass="selecters">
<f:selectItems value="#{userSelectBean.userList}" />
</p:selectOneMenu>
UserManagerBean.java
@ManagedBean
@RequestScoped
public class UserManagerBean {
private String somValue;
private String selectedUser;
private List<User> userData;
private List<User> users;
public UserManagerBean() {
}
public String getSomValue(){
return somValue;
}
public void setSomValue(String somValue){
this.somValue = somValue;
}
// Getter for Table Content
public List<User> getUserData() {
return userData;
}
有什么想法吗?
€:问题是如果我调用方法和ajax更新,则仅在getter中返回所选项目:
<p:ajax update="panelMain" listener="#{userManagerBean.changeEvent}" />
但是我在页面加载时没有得到正确的选择项( item = null )。
【问题讨论】:
-
你为什么要把这个复杂化?您可能将组件的值绑定到支持 bean 属性?
-
我也试过了,但我没有将选定的项目名称作为值,而且我的 valueChangeListener 也不起作用:如果我更改选定的项目,则不会被调用。更准确地说:getter 为 somValue 返回 null
-
你能展示你的backing bean的相关部分吗?此属性
somValue的类定义、注释以及getter 和setter。 -
增加了backing bean的相关内容。
-
当然你在页面加载时得到一个空值。
somValue在页面加载时为空。还是你在某个地方初始化它?
标签: java jsf primefaces