0

コードから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)。

4

1 に答える 1

1

Beanのリストを使用してデータを設定しているf:selectItemsため、コンバーターを追加するか、itemValue属性を指定する必要があります。あなたの場合、値はあなたのBeanの識別子をString提供itemValueします:StringUser

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

プロパティcodeを変更し、 Beannameにあるものに変更します。バッキングビーンでのあなたの価値がであるように指し示すUser岸になりなさい。itemValueStringString

于 2013-03-12T10:35:05.947 に答える