[Seasar-user:21826] Re: [Teeda] Filterでのレスポンス内容加工について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2014年 3月 13日 (木) 02:30:34 JST


小林 (koichik) です。

Filterを使うのがいいんじゃないでしょうか。

> そこで、クライアントにレスポンスを返す直前に Filter で
> レスポンス内容を加工したいのですが、既に isCommitted が true の
> 状態のため書き換えることができませんでした。

それはFilterでHttpServletResponseをラップ
していないためでは?
通常Filterは必要に応じてRequest/Responseを
ラップして次のFilterに渡します。
このケースではHttpServletResponseをラップ
(そのためのHttpServletResponseWrapper) して
カスタムのWriter/OutputStrewamを返すことで
レスポンスを自由に加工出来るはずです。


On Wed, 12 Mar 2014 13:40:46 +0900, HATTI <hatti33 @ gmail.com> wrote:

> お世話になっております。
> hatti です。
> 
> 表記の件、現在 Teeda (1.0.13-sp9) を用いた開発をしております。
> 
> まずやりたいことですが、クライアントに表示する前に
> 「レスポンス(html)内の全角数字を半角数字にする」などの共通後処理です。
> 
> Teeda 的にはコンバータを作成して、各 Page クラスのフィールドに
> アノテーションをつけていくのが正しいのだと認識はしているのですが
> システム全体の共通処理のため、最終的にフィルタで実装すればよいかな
> という方針で進めていました。
> 
> そこで、クライアントにレスポンスを返す直前に Filter で
> レスポンス内容を加工したいのですが、既に isCommitted が true の
> 状態のため書き換えることができませんでした。
> 
> その他、「javax<eclipse-javadoc:%E2%98%82=shohindb/src%5C/main%5C/webapp%5C/WEB-INF%5C/lib%5C/teeda-core-1.0.13-sp9.jar%3Cjavax>
> .faces<eclipse-javadoc:%E2%98%82=shohindb/src%5C/main%5C/webapp%5C/WEB-INF%5C/lib%5C/teeda-core-1.0.13-sp9.jar%3Cjavax.faces>
> .event<eclipse-javadoc:%E2%98%82=shohindb/src%5C/main%5C/webapp%5C/WEB-INF%5C/lib%5C/teeda-core-1.0.13-sp9.jar%3Cjavax.faces.event>
> .PhaseListener」を実装したリスナーにより
> 「PhaseId.RENDER_RESPONSE」の #afterPhase() でも試してみましたが
> こちらでも対応ができませんでした。
> (リスナー時点では、レスポンス内容が文字列ではなくまだ「javax<eclipse-javadoc:%E2%98%82=shohindb/src%5C/main%5C/webapp%5C/WEB-INF%5C/lib%5C/teeda-core-1.0.13-sp9.jar%3Cjavax>
> .faces<eclipse-javadoc:%E2%98%82=shohindb/src%5C/main%5C/webapp%5C/WEB-INF%5C/lib%5C/teeda-core-1.0.13-sp9.jar%3Cjavax.faces>
> .component<eclipse-javadoc:%E2%98%82=shohindb/src%5C/main%5C/webapp%5C/WEB-INF%5C/lib%5C/teeda-core-1.0.13-sp9.jar%3Cjavax.faces.component>
> .UIComponent」
> で、かつ ValueBinding クラス内で保持しているJSF式(例:#{hoge})が評価されていない
> という認識ですが大丈夫でしょうか?)
> 
> また、Teeda のソースファイルから dicon ファイルやfaces-config.xmlなどを参照し、
> 拡張ポイントを拡張することで改善できないか検討してみましたが
> あまり時間もかけられないため判断つかず、当メーリングリストで質問させていただきました。
> 
> 長くなりましたが、お聞きしたいのは上記対応方法がそもそも間違っている、
> こうしたらできるよ、などご教示いただけると大変助かります。
> また、既存システムの改修のため、純粋な Teeda の環境ではないので
> 上記方法でも、本来の純粋な Teeda ならいけるよ、などの情報でもありがたいです。
> 
> 以上、よろしくお願いいたします。


-- 
{
  name: "Koichi Kobayashi",
  mail: "koichik @ improvement.jp",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
}



Seasar-user メーリングリストの案内