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

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 9月 4日 (火) 17:35:15 JST


大谷です.

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]
=============================



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