33

編集可能なprimefaces selectOneMenuを使用していくつかの値を表示しています。ユーザーがリストからアイテムを選択すると、テキストエリアが更新されます。ただし、ユーザーが selectOneMenu に何かを入力した場合、テキストエリアは更新されません。

私はこれを ajax イベントアウトで解決できると考えました。ただし、ここでどのイベントを使用できるかわかりません。valueChangeイベントしか知らない。またはのような他のイベントはありますonSelectonKeyUp

これが私のコードです:

<p:selectOneMenu id="betreff" style="width: 470px !important;"  
            editable="true" value="#{post.aktNachricht.subject}">
            <p:ajax event="valueChange" update="msgtext"
                listener="#{post.subjectSelectionChanged}" />
            <f:selectItems value="#{post.subjectList}" />
</p:selectOneMenu>

<p:inputTextarea style="width:550px;" rows="15" id="msgtext"
        value="#{post.aktNachricht.text}" />
4

4 に答える 4

3

selectOneMenu コンポーネントを実行する前に、「required」属性が「true」の空のコンポーネントがページに含まれないように注意してください。
次のようなコンポーネントを使用する場合

<p:inputText label="Nm:" id="id_name" value="#{ myHelper.name}" required="true"/>

それから、

<p:selectOneMenu .....></p:selectOneMenu>

必要なコンポーネントを埋めるのを忘れると、selectoneMenu の ajax リスナーを実行できません。

于 2015-11-30T15:25:02.293 に答える
2

コンポーネントの値がselectOneMenuサブジェクトのリストに属しているかどうかを確認できます。

すなわち:

public void subjectSelectionChanged() {
    // Cancel if subject is manually written
    if (!subjectList.contains(aktNachricht.subject)) { return; }
    // Write your code here in case the user selected (or wrote) an item of the list
    // ....
}

おそらくsubjectList、 のようなコレクション型ですArrayList。もちろん、ここでは、ユーザーがリストの項目を書き込んselectOneMenuだ場合にコードが実行されます。

于 2013-09-27T10:59:44.487 に答える