Teedaなポートレットの processAction と render でのライフサイクルの呼び出し

別なところに書いたので、ここにも書いておく。現状、Teeda の FacesPortlet では、

  • processAction() では Lifecycle#execute() だけの呼び出し
  • render() では Lifecycle#execute() と Lifecycle#render() の呼び出し(ただし、Lifecycle#execute() では RestoreView フェーズだけ呼び出し)

という感じで、ライフサイクルを呼び出している。当初は、processAction で Lifecycle#execute、render では Lifecycle#render という感じだったのだけど(MyFacesなどはそんな感じ)、Teeda の場合、RestoreView フェーズを呼ばないと、Teeda Extension で問題があったので、render でも Lifecycle#execute を呼ぶようにしてます。そんな感じで、サーブレットとポートレットの違いを FacesPortlet がいろいろと吸収してくれてます。

Teedaのポートレットでnewwindow

Teedaなサーブレットとかでは、newwindow=trueとかして、別ウィンドウを開いたりする場合もあると思うけど、ポートレットの場合、ポートレットだけでnewwindow=trueとかする用途って、ほとんどない気がしてます(たとえば、ポートレットが複数あるページを別ウィンドウで開き直すみたいな感じ)。個人的にはその状況に出くわしたことないし、別ウィンドウにして、他のポートレットまでさらに再表示しなおしたりでうれしくない気がしてます。なので、よくやるのが、別ウィンドウを開くときにはサーブレットとして呼んで、必要な部分だけを表示とか(値を選択するウィンドウとかで)。そんな感じで、ポートレット的にあまり重要視していないのですが、いやいや、こういう状況があるなど、見逃しているような状況があればお知らせください。