0

JSFページの1つでJavaScriptを使用しようとしています。残念ながら

<h:body onload="init('#{formBean.arrayAsString}')"> 

まったく呼び出されません。ページに移動するナビゲーションケースに/redirectタグを追加すると、関数が読み込まれることを発見しました。残念ながら、これは別の問題を引き起こします。これは、ナビゲーションで重要なf:paramも渡して、formBeanがそれを読み取れるようにするためです。/ redirectタグを使用すると、param値を読み取ることができなくなります。

リダイレクトタグを使用せずにjavascriptinit関数をロードするにはどうすればよいですか?または、リダイレクトを使用してf:param値を渡すことはできますが、私が知る限り、これは不可能です...

以下にナビゲーション方法を投稿します。

最初の.xhtmlページ:

<h:selectOneMenu id="selectMenu" value="#{indexBean.name_id}">
    <f:selectItems value="#{indexBean.myModelValues}" />    
    <f:ajax event="valueChange" render="button" execute="@this"/>       
</h:selectOneMenu>
                <h:commandButton id="button" value="Go to form Browse" action="form">
                  <f:param name="name" value="#{indexBean.name_id}" />                                       
                </h:commandButton> 

このボタンは、選択した値を渡すためにah:selectOneMenuのajaxイベントによっても再レンダリングされることに注意してください。

そしてナビゲーションケース:

 <navigation-rule>
        <from-view-id>/index.xhtml</from-view-id>
        <navigation-case>   
            <from-outcome>
                form
            </from-outcome>
            <to-view-id>
                /form.xhtml
            </to-view-id>
            <redirect/>
        </navigation-case>
        </navigation-rule>

リダイレクトタグは、JavaScriptの初期化機能を有効にした新しいアドオンです。

4

1 に答える 1

2

これは、アクションが ajax によって呼び出された場合に発生します。ajax 以外のアクションにします。


更新: 質問の更新に従って、に置き換え<a4j:commandButton><h:commandButton>ajax 以外のアクションにします。ところで、JSF 2 では、from 結果が to ビュー ID と既に等しい場合、ナビゲーション ケースはもう必要ありません。全体を削除し<navigation-rule>ます。必要ありません。

于 2012-05-15T13:51:49.930 に答える