0

このコードで:

<f:metadata>
   <f:viewParam name="aParameter" value="#{myBean.aParameter}" /> 
</f:metadata>

...

<h:commandLink  value="commandLink" action="#{myBean.navigate()}">
   <f:param name="aParameter" value="TEST" />
</h:commandLink>

commandLink を使用して送信すると、UPDATE_MODEL フェーズで f:paramの値を使用して myBean.aParameter が viewParam (デバッグで表示) によって更新されます。

これは正常ですか?

はい、viewParam と param が同じ名前であることはわかっています。選択の余地はありません。

Mojarra 2.1.27を使用しています

4

1 に答える 1

0

私はそれが正常である理由をまとめたと思います:

  • commandLink の f:paramはサーバーに送信され (そうは思いませんでした)、requestParametersMap の一部です。
  • f:viewParam は、ポストバックであっても、JSF livecycle 全体を実行します
  • f:viewParam は、requestParametersMap の内容で値を更新します。
  • requestParametersMap が viewParam の名前に対応するキーをたまたま持っている場合、viewParam はそのことを行います (値を使用してモデルを更新します)。

だから…それは正常です。ステートレスな viewParam ( OmniFaces の o:viewParam など)を使用してこの動作を変更します。ポストバックの更新はありません。これ以上の問題はありません。


しかし、mojarra 2.1.27 では問題が発生したのに、2.1.25 ではすべて問題ないように見えた理由がわかりません。良い...

于 2014-03-06T13:47:10.150 に答える