0

次のような表があります。

<h:panelGroup rendered="#{ImportFromCSVFile.step2Visible}">
    <div style="width: 100%; overflow: auto; max-height: 400px;">
        <tr:table id="step2ColumnMappings" var="columnMappingEntry" rows="0" rowBandingInterval="1" value="#{ImportFromCSVFile.columnMappings}">
            <tr:column>
                <tr:outputLabel value="#{columnMappingEntry.columnIndex}"/>
            </tr:column>
            <tr:column>
                <tr:outputLabel value="#{columnMappingEntry.columnValue}"/>
            </tr:column>
            <tr:column>
                <h:selectOneMenu value="#{columnMappingEntry.columnType}" validator="#{ImportFromCSVFile.validateColumnType}" onchange="submit()" valueChangeListener="#{ImportFromCSVFile.columnMappingChanged}">
                    <f:selectItems value="#{ImportFromCSVFile.columnsToBeMapped}" />
                </h:selectOneMenu>
            </tr:column>
        </tr:table>
    </div>
</h:panelGroup>

これは、3 つの列 (最初の 2 つのテキストと最後の 1 つのドロップダウン) を持つテーブルとして (適切に) レンダリングされます。ドロップダウンも、モデルの値に基づいて適切に初期化されます。

私がする必要があるのは、ドロップダウンの値が変更されるたびに何らかのロジックを実行できるようにすることです。コードでわかるように、valueChangeListeneronを使用することを考えていましたが、呼び出されません。selectOneMenu今頭に浮かぶ唯一のことは、フォームが送信されたときに POST パラメーターを操作することですが、これは最適ではありません。

valueChangeListenerこの状況で仕事をする方法を知っていますか? JSF 1.2。明らかな解決策や既知の解決策を見逃している可能性がありますが、残念ながら私は JSF の経験がほとんどなく、定期的に使用していません。

事前にどうもありがとうございました!

xmlns:h="http://java.sun.com/jsf/html" xmlns:tr="http://myfaces.apache.org/trinidad"

4

2 に答える 2

0

最も簡単な方法は、<h:selectOneChoice の代わりに<tr:selectOneChoiceを使用することです。そのvalueChangeListenerを同じ方法で使用します。ただし、JSF ライフサイクルを認識していないため、そのように Javascript を介してフォームを送信することはできません (適切なものを投稿していないため、コードはそのレベルの JSF 内部と対話するべきではありません)。これを設定<tr:selectOneChoice autoSubmit="true"...すると、値変更リスナーを呼び出すドロップダウン メニューの値が変更されたときにポストが発生します。

于 2012-12-13T05:37:31.097 に答える
0

コード スニペットで言及した方法のような JavaScript 関数を呼び出しても、フォームは送信されません。

値変更

アプリケーション レベルのロジックをチェックするバッキング Bean にリクエストを送信する必要があります。を削除してみることができます

オンクリック

属性とメッセージを入れてください。

バリデーター

. 検証が成功せず、対応するメッセージまたは通知を添付していない場合、目的のアクションが実行されないことがあります。したがって、ロジックが記述されている可能性がありますが、JSF ライフサイクルは次の時点で中断します。

検証フェーズ

残りのアクションは呼び出されません。

于 2012-12-13T06:02:37.403 に答える