[Wicket-ja-user 76] Re: AjaxButtonでsubmitしたFormの緕竢粤について

Back to archive index

矢野 勉 benbr****@mac*****
2008年 4月 15日 (火) 21:59:21 JST


矢野です。

Filterで解決したとのことでよかったです。

UTF-8とsetCharacterEncoding()の件ですが、これは私の考えでは 
Wicketのバグです。まあ、setCharacterEncoding()すること 
自体は正しいのですが。

通常HTMLフォームは自分が今使っている(表示に使った)文 
字エンコードを使って情報を送信します。Wicketはページ表 
示の際のコードとしてsetResponseRequestEncoding()の値を 
使うので、フォームを受け取る際もこのコードを使うのは正しい。

ただしAjaxButtonによるサブミットとなると話は別で、ここ 
で使われているencodeURIComponent()関数は、ECMAScript 
仕様によって文字をUTF-8にエンコードして送信することに 
なっています。Wicketの一部であるAjaxButtonが内部で 
encodeURIComponentを使っている以上、それを受け取る際に 
UTF-8として読み込むのはWicketの仕事であるはずで、そう 
なってないのは単なるバグだと思います。

文字エンコーディングであまり苦しむことのないアルファベット圏 
の人たちはUTF-8でやれば動くからこれで解決!と安易に考え 
がちなので、2バイト文字文化圏からガンガンいってやらないと分 
からないかと思います。

幸い今回はFilterでAjaxコンポーネントからのサブ 
ミットを検知する方法まで分かっていますし、ざっとみてみたら 
WicketFilterのdoGet()メソッド内部で 
setCharacterEncoding()しているのがすぐに見つかりましたから、 
あとでバグ報告しておこうと思います。


---------------------------------------------------
矢野 勉(やの つとむ)
電子メール:benbrand_at_mac.com
---------------------------------------------------




Wicket-ja-user メーリングリストの案内
Back to archive index