ブログポートレットをTeedaに移行中。でも、Tomahawkを使っているかわからんが、動きが少々怪しい。うまくアクションも呼ばれないし。というわけで、調査中・・・。見ていると、UIViewRootの下に何もついていないような・・・。
投稿者: shinsuke
JSF Spec 3.1.1 と 6.1.2
ExternalContext の encodeNamespace について、調べていて気づいたのだが、サーブレットでは何もしないので関係ないが、ポートレットではRenderResponse#getNamespace()を使って変換する。でも、この変換が曖昧・・・。3.1.1は、id は文字か_出始めろと書いているけど、6.1.2 ではprefixされると言っている。javadocでもprefixed by と言っているので、RenderResponse#getNamespace()を前に置くというようにととれる。でも、そうすると、3.1.1を壊す場合もあり得る。ということで、MyFacesでは、後ろに置くようにしている(元々前だったと思うが変更している)。Teeda もそれに従って、後ろに置いている。だが、Sunの実装は、前だ(っていうか、Sunの実装は1年前のだしな・・・古い)。3.1.1と6.1.2のどちらを優先すべきかは難しいけど、個人的意見としては、3.1.1を優先した方がいいかと思うので、Teedaではそのままにしておこう(MyFacesがこれでTCK通っているので、たぶん、そのままでも影響はないと思うし、Stan は JSF のスペックの話に加わっていると思うからそれでも大丈夫だろう・・・と思う)。
http://marc2.theaimsgroup.com/?l=myfaces-dev&m=114123084404303&w=2
Teeda for Portlet
別件作業がとりあえず、一段落したので、ClassCastException を見てみた。というわけで、HtmlOutputTextRenderer で UIOutput が処理できるようにしました。MyFaces と Sun JSF のコードをながめてみたところ、同じようなのが UIOutput が処理できる気がするので、追加しました。ClassCastException で落ちるのもまずいかと思うので。ほかへの影響が不明なため、とりあえず、メソッドを追加する形にしたけど、特になければ、統合してしまっても良いかも。