[Seasar-user:10380] Re: [Teeda]JSPのcharsetが無視される

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 9月 6日 (木) 21:48:08 JST


大谷です.

> 米林さんの
> >Kumu.Ajax.URL = '/example/teeda.ajax';
> によって、/faces/は入らなくなりました。
> ありがとうございました。
>
> しかし、そもそも、
> なぜ、charsetを置き換えるんでしょうか?
> なにか理由でもあるんでしょうか。

置き換えているのではなく、毎回設定しているだけです.

問題となっているのはそこではなく、
Ajax(というよりもencodeURIComponent())が基本的にUTF-8しか
扱えないにもかかわらず、JSF側(こちらはWindows-31j)のアクセスと
混じってしまっているのが問題です.
きちんとアクセスされるべきServletにアクセスが行き届けば
基本的には混じることのないアクセスなので、それで問題ないと思います.

07/09/06 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
さんは書きました:
> お世話になります。田口です。
>
> 米林さんの
> >Kumu.Ajax.URL = '/example/teeda.ajax';
> によって、/faces/は入らなくなりました。
> ありがとうございました。
>
> しかし、そもそも、
> なぜ、charsetを置き換えるんでしょうか?
> なにか理由でもあるんでしょうか。
>
> 以上です。
>
> >米林です。
> >
> >> >teeda-jsp-exampleで再現できるケースが作れそうであれば、
> >> >作成してもらえるとどんなケースかがすぐにわかると思います.
> >> とのことですので、
> >> teeda-jsp-example内にある、
> >> autocomplete.htmlの拡張子を当方の環境に合わせ、
> >> autocomplete.jspとし、
> >> JSFなので、URLに/faces/をつけてアクセスし実行すると、
> >> http://www.example.com/example/faces/ajax/teeda.ajax
> >> のような感じで、/faces/が入ってしまいます。
> >
> >田口さんに試して頂きたいのですが
> >ajax呼び出しする際に、以下を試して頂けますか?
> >
> >Kumu.Ajax.URL = '/example/teeda.ajax';
> >
> >上記を設定してから、ajaxを実行して下さい。
> >
> >よろしくお願いします。
> >
> >
> >----- Original Message -----
> >From: <[E-MAIL ADDRESS DELETED]>
> >Sent: Thursday, September 06, 2007 8:13 PM
> >
> >> お世話になります。田口です。
> >>
> >> >teeda-jsp-exampleで再現できるケースが作れそうであれば、
> >> >作成してもらえるとどんなケースかがすぐにわかると思います.
> >> とのことですので、
> >> teeda-jsp-example内にある、
> >> autocomplete.htmlの拡張子を当方の環境に合わせ、
> >> autocomplete.jspとし、
> >> JSFなので、URLに/faces/をつけてアクセスし実行すると、
> >> http://www.example.com/example/faces/ajax/teeda.ajax
> >> のような感じで、/faces/が入ってしまいます。
> >>
> >> ご確認ください。
> >>
> >>
> >> >大谷です.
> >> >
> >> >まず、こちらの認識とずれている点があります.
> >> >TeedaAjaxはデフォルトではhttp://www.example.com/example/teeda.ajaxのような
> >> >URLでアクセスされます.そのため、/faces/などが入ることは無いと思います.
> >> >また、原則としてTeedaAjaxではUTF-8前提になっていますが、
> >> >URLがかぶることがないので、JSPの方に影響は与えないはずです.
> >> >このあたりの事実関係をもう少し調べてみてもらえないでしょうか?
> >> >
> >> >teeda-jsp-exampleで再現できるケースが作れそうであれば、
> >> >作成してもらえるとどんなケースかがすぐにわかると思います.
> >> >宜しくお願いします.
> >> >
> >> >07/09/04 に Shinpei Ohtani<[E-MAIL ADDRESS DELETED]> さんは書きました:
> >> >> 大谷です.
> >> >>
> >> >> https://www.seasar.org/issues/browse/TEEDA-359
> >> >>
> >> >> として課題としてあげておきました.
> >> >> 後ほど調査してみます.取り急ぎ.
> >> >>
> >> >> 07/09/03 に Shinpei Ohtani<[E-MAIL ADDRESS DELETED]> さんは書きました:
> >> >> > 大谷です.
> >> >> >
> >> >> > 下記の件ですが、ちょっと時間が今取れないので
> >> >> > 後日改めて調べてみます.
> >> >> > すいませんが、宜しくお願いします.
> >> >> >
> >> >> > 07/09/03 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
> >> >> > さんは書きました:
> >> >> > > お世話になります。田口です。
> >> >> > >
> >> >> > > 表題の件、原因が判明しましたのでご報告と、
> >> >> > > 再度質問があります。ご回答をよろしくお願いいたします。
> >> >> > >
> >> >> > > 1.レスポンスがUTF-8となった原因
> >> >> > > JSPでは@pageでWindows-31Jを明示的に指定しているが
> >> >> > > viewタグの処理の中でresponse.setContentTypeしているため
> >> >> > > JSPの指定が無視されている。
> >> >> > >
> >> >> > > 2.viewタグの処理でUTF-8がsetContentTypeされた原因
> >> >> > > viewTagでは、リクエストからgetCharacterEncodingを
> >> >> > > 取得し、setContentTypeで設定している。
> >> >> > >
> >> >> > > 3.リクエストのCharacterEncodingがUTF-8となった原因
> >> >> > > フィルターの処理でCharacterEncodingを"Windows-31J"と
> >> >> > > 設定しているが、
> >ServletExternalContextUtil.setCharacterEncoding(ServletRequest)
> >> >> > > でUTF-8に上書きされている
> >> >> > >
> >> >> > > 4.ServletExternalContextUtilでUTF-8が設定された原因
> >> >> > > ServletExternalContextUtil.setCharacterEncodingでは下記のように動作して
> >いる
> >> >> > >
> >> >> > > getEncodingFromContentType ==> null
> >> >> > > getEncodingFromSession ==> UTF-8
> >> >> > >
> >> >> > > 5.getEncodingFromSession がUTF-8となった原因
> >> >> > > 直前のajaxのリクエストが
> >> >> > > FacesServlet -> AjaxServlet(フォワード)
> >> >> > > で処理されていてFacesServletの
> >> >> > > ViewHandlerImpl.storeResponseCharacterEncoding(ExternalContext)
> >> >> > > のなかでUTF-8が設定されている
> >> >> > >
> >> >> > > 6.ajaxのリクエストがFacesServletで処理される原因
> >> >> > > teedaのJSPの中でajax(teeda-ajax)を利用しており、ajaxのリクエストURL中に
> >> >> > > facesが含まれるため、web.xmlの
> >> >> > >         <servlet-mapping>
> >> >> > >                 <servlet-name>Faces Servlet</servlet-name>
> >> >> > >                 <url-pattern>/faces/*</url-pattern>
> >> >> > >         </servlet-mapping>
> >> >> > > にマッチしたため。
> >> >> > >
> >> >> > > ■質問内容
> >> >> > > 上記の現象をなんと回避したいのですがよい方法はないでしょうか。
> >> >> > > 6のurl-patternでajaxを除外できればと考えましたが、記述の仕方が
> >> >> > > 判りませんでした。
> >> >> > > ちなみにurl-patternを*.jspとすると、HttpServletRequest.getPathInfoの結
> >果にfaces
> >> >> > > が含まれてしまい、無限ループしてしまいました。
> >> >> > >
> >> >> > > 以上、よろしくお願いいたします。
> >> >> > >
> >> >> > >
> >> >> > > >お世話になります。田口です。
> >> >> > > >
> >> >> > > >JSPでTeeda-ajax-1.0.7、Teeda-core-1.0.7を使い開発しています。
> >> >> > > >
> >> >> > > >JSPのPageディレクティブに
> >> >> > > ><@ page language="java" contentType="text/html; charset=Windows-31J"
> >%>
> >> >> > > >と指定していますが、
> >> >> > > >Ajax通信後に表示されるページの
> >> >> > > >レスポンスデータを見ると、
> >> >> > > >UTF-8となっています。
> >> >> > > >(以降もUTF-8のまま)
> >> >> > > >
> >> >> > > >Ajax通信後には、contentTypeのcharsetに従い、
> >> >> > > >Windows-31Jとなってほしいのですが。
> >> >> > > >
> >> >> > > >原因と対策方法をご教示ください。
> >> >> > > >以上、よろしくお願いいたします。
> >> >> > > >
> >> >> > > _______________________________________________
> >> >> > > Seasar-user mailing list
> >> >> > > [E-MAIL ADDRESS DELETED]
> >> >> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> >> >> > >
> >> >> >
> >> >> >
> >> >> > --
> >> >> > =============================
> >> >> > Shinpei Ohtani
> >> >> > [E-MAIL ADDRESS DELETED]
> >> >> > =============================
> >> >> >
> >> >>
> >> >>
> >> >> --
> >> >> =============================
> >> >> Shinpei Ohtani
> >> >> [E-MAIL ADDRESS DELETED]
> >> >> =============================
> >> >>
> >> >
> >> >
> >> >--
> >> >=============================
> >> >Shinpei Ohtani
> >> >[E-MAIL ADDRESS DELETED]
> >> >=============================
> >
> >---
> >米林 正明
> >[E-MAIL ADDRESS DELETED]
> >
> >_______________________________________________
> >Seasar-user mailing list
> >[E-MAIL ADDRESS DELETED]
> >https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



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