gpt4 book ai didi

java - 从代码中获取 SelectOneMenu 的所选项目

转载 作者:行者123 更新时间:2023-12-01 14:46:51 24 4
gpt4 key购买 nike

我正在尝试从代码中获取 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 列表来填充 f:selectItems 时,您应该添加转换器或提供 itemValue 属性。在您的情况下,值为 StringitemValue 提供 User bean 的一些 String 标识符:

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

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

关于java - 从代码中获取 SelectOneMenu 的所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15358230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com