コードからprimefacesSelectOneMenuで選択されたアイテムの名前を取得しようとしています:
これは私のSelectOneMenuです:
FacesContext.getCurrentInstance().getViewRoot().findComponent("formMain:somSelect");
コンポーネントが見つかりました。すでにSelectOneMenuにキャストしようとしましたが、「クライアント側API」のユーザーマニュアルに記載されている「getSelectedValue()」のようなメソッドを取得できません。私も試しました:
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アップデートを呼び出した場合にのみ、選択したアイテムがゲッターに返されることです。
<p:ajax update="panelMain" listener="#{userManagerBean.changeEvent}" />
しかし、ページの読み込み時に正しく選択されたアイテムを取得できません(item = null)。