[Seasar-user:18090] Re: 【sastruts】response.setContentTypeを設定しても、HTTPヘッダーに送出されない

Shin Takeuchi [E-MAIL ADDRESS DELETED]
2009年 7月 28日 (火) 18:54:21 JST


竹内(stakeuchi)です。
#横から失礼します。

SAStrutsで普通にJSPを使う場合
S2RequestProcessor#processContent以下で「text/html」が設定されるため
これよりも上位でsetContentTypeしないと、
上書き設定は非常に困難です。
#Tomcat/Glassfish等を利用していると仮定しています


逆にS2RequestProcessorよりも上位で設定してしまえば良いので
Filterを作成して設定すれば思い通りの結果が出せるはずです。

もしくは(こちらもFilter等を利用する必要がありますが)
HttpServletResponseをラップして、
意図的に開発者が呼び出した時のみ、上位のsetContentTypeが呼び出されるように
setContentTypeメソッドをOverrideしてしまうのも良いかもしれません。
#これであればActionレベルで指定出来ると思います。


mobyletのMobyletFilter/MobyletResponseクラスが
このあたりの処理を行っているので(今回の事例はまさに携帯ですし)
参考になるかもしれません。


2009/07/28 16:38 に aoyogi kouhei<[E-MAIL ADDRESS DELETED]> さんは書きました:
> お世話になります。青柳と言います。
>
> sastruts 1.0.4-sp5で以下のようなコードを実行しました。
>
>     @Resource
>     protected HttpServletResponse response;
>
>     public String meta;
>     public String docType;
>
>     @Execute(validator = false)
>     public String index()
>     {
>         Mobile mobile = Mobile.getMobile(RequestUtil.getRequest());
>         if (mobile.isDocomo()) {
>             meta = "<meta http-equiv=\"Content-Type\"
> content=\"application/xhtml+xml; charset=utf-8\" />";
>             docType = "<!DOCTYPE html PUBLIC \"-//i-mode group (ja)//DTD
> XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN\" \"i-xhtml_4ja_10.dtd\">";
>             response.setContentType("application/xhtml+xml; charset=utf-8");
>         } else {
>             meta = "<meta http-equiv=\"Content-Type\" content=\"text/html;
> charset=utf-8\" />";
>             docType = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0
> Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
>         }
>         return "index.jsp"
>     }
>
> この時、docomo携帯で見た時だけ特別なContent-Typeを返したいのですが
> docomoでもそれ以外でもヘッダーを確認すると
> 「Content-Type: text/html;charset=UTF-8 」
> となってしまいます。
>
> ちなみに、return null;にすると、求めていたヘッダーが返ってきました。
> jspを表示してかつ、ヘッダーを送出する方法はありますか?
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>



-- 
―Lei Hau'oli Co.,Ltd.―――――――――――

 竹内 真(TAKEUCHI SHIN)
 Tel: 080-3300-9888
 Mail: [E-MAIL ADDRESS DELETED]

 株式会社Lei Hau'oli
 〒150-0001 東京都渋谷区神宮前4丁目18番6号
 Tel: 03-5775-0315 Fax: 050-3488-2266


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