たまーにブログ解析を見に来るんですが、JSFの検索増えましたね。
日本語資料あんまりないですが、個人的には非常に便利だと思っているので
そろそろ流行りだしそうな感じなんですかね。
ということでまた備忘録。
JSF2.2 + Spring3.0の為、CDIのViewScopeが使えない環境でした
実際にはいろいろとやり方はあるんでしょうが…ごった煮状態だと何をどれで管理してるのか
わからなくなってしまいそうなので、Springのカスタムスコープをを使ってViewScopeを実現することにしました。
カスタムスコープの作成方法はこちらの記事を参考にさせて頂きました。
ただ、このViewScopeが適用されるにはいろいろと条件がありました。
というか、viewIdが新しくなると、たとえxhtmlとしては同じページでも
違う画面だという判断になってしまうので、どういう場合にviewIdが切り替わるのか?と色々と調べてみました。
h:link、h:buttonを使用した場合などの、GET遷移の場合は常にviewIdが切り替わるようです。
まあ、これは想定内ですね。
h:commandLink、h:commandButtonなどでPOST遷移する場合。
ここ、ちょっと躓きましたが、結果以下のような形でした。
viewIdの変更なし
Stringの内容によって変動
return null … viewIdの変更なし
retun outcome … viewIdの変更あり。元ページと同じoutcomeでも別扱い
こんな感じでした。
なので、ViewScope範囲内で画面再表示を実施したい場合は、かならずPOST遷移で値をnullで返却する、という形で収まりました。
よく考えれば当たり前のことな気はするんですけど、調べないとわかりませんでした。
まだまだ修行不足ですね。
ちなみに、f:viewActionについても調べてみました。
f:viewActionは「画面を初回表示した際にのみ」実施されるわけですが、
これもどういう判断でされているのか?を調べてみたんですけど
こちらは、完全にGET遷移かPOST遷移かだけで判断しているようです。
なので、 return outcomeで別ページから遷移してきても、実行されません。
このあたりややこしいですね
日本語資料あんまりないですが、個人的には非常に便利だと思っているので
そろそろ流行りだしそうな感じなんですかね。
ということでまた備忘録。
JSF2.2 + Spring3.0の為、CDIのViewScopeが使えない環境でした
実際にはいろいろとやり方はあるんでしょうが…ごった煮状態だと何をどれで管理してるのか
わからなくなってしまいそうなので、Springのカスタムスコープをを使ってViewScopeを実現することにしました。
カスタムスコープの作成方法はこちらの記事を参考にさせて頂きました。
ただ、このViewScopeが適用されるにはいろいろと条件がありました。
というか、viewIdが新しくなると、たとえxhtmlとしては同じページでも
違う画面だという判断になってしまうので、どういう場合にviewIdが切り替わるのか?と色々と調べてみました。
■ GET遷移の場合
h:link、h:buttonを使用した場合などの、GET遷移の場合は常にviewIdが切り替わるようです。
まあ、これは想定内ですね。
■ POST遷移の場合
h:commandLink、h:commandButtonなどでPOST遷移する場合。
ここ、ちょっと躓きましたが、結果以下のような形でした。
①遷移先Actionの戻り値がboidの場合
viewIdの変更なし
①遷移先Actionの戻り値がStringの場合
Stringの内容によって変動
return null … viewIdの変更なし
retun outcome … viewIdの変更あり。元ページと同じoutcomeでも別扱い
こんな感じでした。
なので、ViewScope範囲内で画面再表示を実施したい場合は、かならずPOST遷移で値をnullで返却する、という形で収まりました。
よく考えれば当たり前のことな気はするんですけど、調べないとわかりませんでした。
まだまだ修行不足ですね。
ちなみに、f:viewActionについても調べてみました。
f:viewActionは「画面を初回表示した際にのみ」実施されるわけですが、
これもどういう判断でされているのか?を調べてみたんですけど
こちらは、完全にGET遷移かPOST遷移かだけで判断しているようです。
なので、 return outcomeで別ページから遷移してきても、実行されません。
このあたりややこしいですね