Teeda for Portlet

ポートレット環境において、prerenderの戻り値でページが変わらない問題を修正(prerenderではポートレットのrenderでredirectしないといけない辛い状況だったので、RequestのAttributeに入った値を捨てて、再度、renderを呼び出し対処)。この修正では、FacesPortletでセッションに入れる情報を変更。今まで、UIViewRootを入れていたけど、viewIdのStringとシリアライズ可能なステートのオブジェクトにした。これが最小の単位なのではなかろうか。というわけで、今まで引っかかるものがあったけど、これですっきりしたかな。

TeedaのprocessSaveState/processRestoreState

FacesPortletでprocessSaveStateとprocessRestoreStateを利用するようにしたのだけど、どうもOutOfRangeのExceptionを食らう。はて、なぜかなっと見てみると、saveするときには、isTransientで保存しないけど、restoreするときには、ノーチェックなのが原因っぽい。というわけで、修正をコミット(問題があれば、突っ込んでください(^^;)。

その修正する際、TEEDA-279を登録しているときにEnterを押したら、登録途中のものがそのまま登録されてしまったので、びっくり(すいません・・・)。ちょっと焦りましたが、登録後にも一通り更新し直せたので一安心。

Teeda for Portlet

UIViewRootを含めて、ViewID の扱いを見直し中。prerenderのところでの redirect は結構、ポートレット的には、想定外の処理だから(JSFとして普通に使っているときには発生しない気がする)、再度、ポートレットの render を呼び出すようなことをしないと、prerenderでのredirectは実現できないと思う。というわけで、これを良い機会として、UIViewRootの扱いを含めて、再検討してみる。

追記:修正候補ができた。UIViewRootの保持をやめられそう。とりあえず、Teeda Extension では、prerender での redirect を含めて、動いているっぽい。あとは、普通の JSF アプリで問題がなければ、コミットしよ。これが問題なければ、今まで、すっきりしなかったところがすっきりするな~。はたして、JSFアプリで問題ないだろうか・・・。