[Seasar-user:18648] Re: [Mobylet]ContentTypeの自動書き換えについて

Shin Takeuchi [E-MAIL ADDRESS DELETED]
2009年 10月 15日 (木) 19:51:01 JST


末さん

竹内(stakeuchi)です。

> Ymir側でカスタムタグを作成し、早速、絵文字を表示さえてみようと
> 試みているのですが、mobylet側でContentTypeがキャリアに応じて、
> 書き換わっていないように見えます。

getOutputStream()はバイナリタイプのレスポンスも通過するため

> setContentType(dialect.getXContentTypeString());
>
> または、
>
>  setContentType(dialect.getContentTypeString());

上記のようなロジックを入れてしまった場合で
かつ、Tomcatを使って画像ファイルのレスポンスも返す場合
上記のロジックを入れてしまうと
画像ファイルにも「text/html」等のContent-Typeを返却することになるため
ちょっと残念なことになってしまいます。

#頑張れば分岐処理も作れると思いますが
#ちょっと置いておいて。。。

また、MobyletとしてはPrintWriter側で絵文字のキャリア間変換も行っているので
Ymirのように(Mobyletと同じく)PrintWriterを自作した場合
キャリア間変換処理などもスルーされてしまうので
このあたりに関してはmobyletの主機能が失われることになるので
Content-Typeの設定が上手く出来たとしても
そもそもgetOutputStreamで処理されることは
推奨し難い動きとなるため、ここを無理矢理カバーしようとは思えないところがあります。


かと言って「Ymir連携が出来ません!」というのは
これまた残念過ぎるので
実は1.0.0に向けてYmirのように自作PrintWriterを作るFWとの連携の対応をしています。


現状、Ver1.0.0-SNAPSHOTで
軽いテストを行ったところ動作確認が出来ましたので
対応方法を軽く書いておきます。


(1)mobylet-coreのver.1.0.0-SNAPSHOTを使う

(2)Ymirでレスポンスの文字コードを「UTF-8」に設定する。
 ※ここは選択出来るよう改修予定

(3)MobyletFilterを以下のクラスに変更する
 org.mobylet.core.http.ForceWrapMobyletFilter

(4)Ymirのサーブレットで処理されるActionに対して
 ForceWrapUtils.setForceWrapRequest();
 を呼び出す。
 ※インターセプタやFilterで実装しても構いませんし、Servletを拡張して呼び出すのもアリです。
 ※画像等が通過しないロジック上であればどこで処理しても構いません(レスポンス情報が書き出される前であれば)
 ※ForceWrapMobyletFilter自体がActionにしか掛かっていなければ
  web.xmlでfilterのinitParameterで「isAllForceWrap」を「true」と設定しておけば
  個別にsetForceWrapRequest()を呼び出す必要はありません。


もし宜しければ
試してみてください。


よろしくお願い致します。


2009年10月15日18:51 Sue <[E-MAIL ADDRESS DELETED]>:
> いつもお世話になっております。
> 末です。
>
> ymirで、mobylet対応を利用するために
> Content-Typeを書き換えの制御をweb.xmlでできるように、
> ymir側で対応して頂きました。
>
> Ymir側でカスタムタグを作成し、早速、絵文字を表示さえてみようと
> 試みているのですが、mobylet側でContentTypeがキャリアに応じて、
> 書き換わっていないように見えます。
>
> MobyletResponseのgetOutputStream()の中で、
> 3キャリアで画像じゃない場合に、
> ConentTypeを設定する箇所が、
>
> setConetntType(contetType)
>
> とのみ、記述されておりますが、
> こちらは、PrintWriter同様に、
>
> setContentType(dialect.getXContentTypeString());
>
> または、
>
>  setContentType(dialect.getContentTypeString());
>
> の設定が必要かと思うのですがいかがでしょうか?
>
> お手数をおかけしますが、ご教授宜しくお願いいたします。
>
> --
> Sue <[E-MAIL ADDRESS DELETED]>
>
> _______________________________________________
> 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: 03-5775-0314


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