【问题标题】:Get SelectOneMenu 's selected item from code从代码中获取 SelectOneMenu 的选中项
【发布时间】: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


【解决方案1】:

当您使用 bean 列表填充 f:selectItems 时,您应该添加转换器或提供 itemValue 属性。在您的情况下,值是 StringitemValue 提供一些 String 您的 User bean 标识符:

<f:selectItems value="#{userSelectBean.userList}" var="u" itemValue="#{u.code}" itemLabel="#{u.name}"/>

将属性 codename 更改为您在 User bean 中的属性。支持itemValue 指向String,因为您在backing bean 中的值是String

【讨论】:

  • 谢谢。我想我知道问题是什么。当我加载页面时,getter 总是为 somValue 返回 null。只有当我再次调用 bean(例如从按钮)时,才会返回正确的值。任何关于解决方法的想法将不胜感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2013-01-27
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
相关资源
最近更新 更多