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の初期化機能を有効にした新しいアドオンです。