[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 メーリングリストの案内