TeedaのViewHandlerImpl#storeResponseCharacterEncoding

今、ポートレットのMyFacesブリッジを作成していて、たまたま ClassCastException に遭遇して気づいたのだが、チェックすべきなのは~Responseではなかろうか・・・。

protected void storeResponseCharacterEncoding(
ExternalContext externalContext) {
// Portlet: RenderRequest does not have getCharacterEncoding()
if (externalContext.getRequest() instanceof ServletRequest) {
ServletRequest req = (ServletRequest) externalContext.getRequest();
if (ServletExternalContextUtil.isHttpServletRequest(req)) {
HttpServletResponse httpRes = ServletExternalContextUtil
.getResponse(externalContext);
HttpSession session = (HttpSession) externalContext
.getSession(false);
if (session != null) {
session.setAttribute(ViewHandler.CHARACTER_ENCODING_KEY,
httpRes.getCharacterEncoding());
}
}
}
}

Teeda for Portlet

TEEDA-29 を修正。そういえば、これは JCP に聞いたら、JSF で直すべしと言われて、 MyFaces で修正しなきゃなっと思いつつ、放置・・・。っで、今日、Teeda でこれに遭遇して、修正。今まで、パッチを当てた Pluto を使っていたから、この問題を忘れてた・・・。MyFaces については誰かが直すことを期待。こんな感じで、MyFaces を放置するから、Teeda がポートレット環境に最適となっていくのだよね。