From aaakenaaa777 @ gmail.com Tue Apr 1 10:56:24 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Tue, 01 Apr 2008 10:56:24 +0900 Subject: [Wicket-ja-user 59] Re: =?iso-2022-jp?b?QWpheEZvcm1Db21wb25lbnRVcGRhdGluZ0JlaGF2aW9y?= =?iso-2022-jp?b?IBskQiRIGyhCUGF0dGVyblZhbGlkYXRvchskQiRyRjEbKEI=?= =?iso-2022-jp?b?GyRCO34kSztITVEbKEI=?= In-Reply-To: <6d26b9a70803310713s61eea58fq1a6b371ad46a401c@mail.gmail.com> References: <6d26b9a70803310713s61eea58fq1a6b371ad46a401c@mail.gmail.com> Message-ID: <47f195cf.0fba720a.474e.2174@mx.google.com> おはようございます、maedaです。 u1さま返信ありがとうございました。 実装したかったことは 1.onblur時に999999形式で入力した数値を999/999と分数表記に変換する。(AjaxFormComponentUpdatingBehavior) 2.ボタン押下時に999/999形式かチェックを行う。(PatternValidator) 実際は999999形式で入力しonblur時にチェックが行われエラーで変換が行われずに 今回は更にエラーが表示されるFeedbackPanelがadd、setOutputMarkupIdされておらず エラーが表示できていないということでしょうか? "yuichi tanaka" wrote: > u1です。 > > 私もハマったことありますが、正常にValidationにひっかかってるんだけど、AjaxRequestTarget > にFeedBackPanelをaddしていない為、エラーメッセージを表示できていないだけだと思います。 > > これもよくやりましたが、setOutputMarkupId(true)を忘れずに! > > > > > 08/03/31 に maeda さんは書きました: > > maedaです。 > > > > 度々質問してしまった申し訳ないのですが・・・。 > > > > TextFieldに対して以下のことを同時に行い対のですが > > > > ・AjaxFormComponentUpdatingBehaviorを使用しonblur時に入力された文字の変換 > > ・PatternValidatorを使用しての入力チェック > > > > 両方ともTextFieldにaddするとAjaxFormComponentUpdatingBehaviorのonUpdateメソッドが > > PatternValidatorで設定したパターンの時の値か空の時しか呼出されなくなってしまいます。 > > > > 以下ソースです。 > > public Test28() { > > > > test28form = new Test28form(); > > > > Form form = new Form("form",new CompoundPropertyModel(test28form)); > > this.add(form); > > > > form.add(new FeedbackPanel("feedback")); > > > > final TextField textField = new TextField("text03"); > > textField.setOutputMarkupId(true); > > > > form.add(textField); > > > > AjaxFormComponentUpdatingBehavior ajaxFormComponentUpdatingBehavior = new AjaxFormComponentUpdatingBehavior("onblur"){ > > @Override > > protected void onUpdate(AjaxRequestTarget arg0) { > > String buf = textField.getValue(); > > > > //変換処理、省略・・・。 > > > > setModelObject(buf); > > arg0.addComponent(textField); > > } > > }; > > > > //AjaxFormComponentUpdatingBehaviorをadd > > textField.add(ajaxFormComponentUpdatingBehavior); > > //PatternValidatorをadd > > textField.add(new PatternValidator("[0-9]{3}/{1}[0-9]{3}")); > > } > > > > 今回のソースですと > > PatternValidatorで3桁数値/3桁数値以外をエラーにするとしているので > > AjaxFormComponentUpdatingBehaviorのonUpdateメソッドが3桁数値/3桁数値を入力した時と > > 空の時にロストフォーカス時しか呼出されません。 > > 単純にaddしただけだとダメなのでしょうか? > > > > WICKET AJAX DEBUGのログでは呼出される時もダメな時も同じログが流れていました。 > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From u1tnk1123 @ gmail.com Tue Apr 1 14:04:42 2008 From: u1tnk1123 @ gmail.com (yuichi tanaka) Date: Tue, 1 Apr 2008 14:04:42 +0900 Subject: [Wicket-ja-user 60] Re: =?iso-2022-jp?b?QWpheEZvcm1Db21wb25lbnRVcGRhdGluZ0JlaGF2aW9y?= =?iso-2022-jp?b?IBskQiRIGyhCUGF0dGVyblZhbGlkYXRvchskQiRyRjEbKEI=?= =?iso-2022-jp?b?GyRCO34kSztITVEbKEI=?= In-Reply-To: <47f195cf.0fba720a.474e.2174@mx.google.com> References: <6d26b9a70803310713s61eea58fq1a6b371ad46a401c@mail.gmail.com> <47f195cf.0fba720a.474e.2174@mx.google.com> Message-ID: <6d26b9a70803312204j56de8bc8vc017dfbaaa1d2dd6@mail.gmail.com> u1です。 申し訳ありません。 記憶で書いていたので見落としていた部分がありました。 > 実際は999999形式で入力しonblur時にチェックが行われエラーで変換が行われずに > 今回は更にエラーが表示されるFeedbackPanelがadd、setOutputMarkupIdされておらず > エラーが表示できていないということでしょうか? 基本的には上記認識で良いのですが、そもそもValidationエラー時はonUpdateに来ないのですから、onUpdateのtargetにaddしても意味ありませんね。ここを見逃していました。 追加で、AjaxFormComponentUpdatingBehaviorのonErrorをオーバーライドして、そのtargetにFeedbackPanelをaddしてください。Validationエラー時はここに来ます。 @Override protected void onError(AjaxRequestTarget target, RuntimeException e) { target.addComponent(feedback); } また、onUpdateのtargetにもaddしておかないと、いったん表示されたエラーが正常時にも消えないのでご注意下さい。 今回は不安になって、1.3.2で動作確認したので問題無いと思います。 08/04/01 に maeda さんは書きました: > おはようございます、maedaです。 > > u1さま返信ありがとうございました。 > > 実装したかったことは > 1.onblur時に999999形式で入力した数値を999/999と分数表記に変換する。(AjaxFormComponentUpdatingBehavior) > 2.ボタン押下時に999/999形式かチェックを行う。(PatternValidator) > > 実際は999999形式で入力しonblur時にチェックが行われエラーで変換が行われずに > 今回は更にエラーが表示されるFeedbackPanelがadd、setOutputMarkupIdされておらず > エラーが表示できていないということでしょうか? > > > > > > "yuichi tanaka" wrote: > > > u1です。 > > > > 私もハマったことありますが、正常にValidationにひっかかってるんだけど、AjaxRequestTarget > > にFeedBackPanelをaddしていない為、エラーメッセージを表示できていないだけだと思います。 > > > > これもよくやりましたが、setOutputMarkupId(true)を忘れずに! > > > > > > > > > > 08/03/31 に maeda さんは書きました: > > > maedaです。 > > > > > > 度々質問してしまった申し訳ないのですが・・・。 > > > > > > TextFieldに対して以下のことを同時に行い対のですが > > > > > > ・AjaxFormComponentUpdatingBehaviorを使用しonblur時に入力された文字の変換 > > > ・PatternValidatorを使用しての入力チェック > > > > > > 両方ともTextFieldにaddするとAjaxFormComponentUpdatingBehaviorのonUpdateメソッドが > > > PatternValidatorで設定したパターンの時の値か空の時しか呼出されなくなってしまいます。 > > > > > > 以下ソースです。 > > > public Test28() { > > > > > > test28form = new Test28form(); > > > > > > Form form = new Form("form",new CompoundPropertyModel(test28form)); > > > this.add(form); > > > > > > form.add(new FeedbackPanel("feedback")); > > > > > > final TextField textField = new TextField("text03"); > > > textField.setOutputMarkupId(true); > > > > > > form.add(textField); > > > > > > AjaxFormComponentUpdatingBehavior ajaxFormComponentUpdatingBehavior = new AjaxFormComponentUpdatingBehavior("onblur"){ > > > @Override > > > protected void onUpdate(AjaxRequestTarget arg0) { > > > String buf = textField.getValue(); > > > > > > //変換処理、省略・・・。 > > > > > > setModelObject(buf); > > > arg0.addComponent(textField); > > > } > > > }; > > > > > > //AjaxFormComponentUpdatingBehaviorをadd > > > textField.add(ajaxFormComponentUpdatingBehavior); > > > //PatternValidatorをadd > > > textField.add(new PatternValidator("[0-9]{3}/{1}[0-9]{3}")); > > > } > > > > > > 今回のソースですと > > > PatternValidatorで3桁数値/3桁数値以外をエラーにするとしているので > > > AjaxFormComponentUpdatingBehaviorのonUpdateメソッドが3桁数値/3桁数値を入力した時と > > > 空の時にロストフォーカス時しか呼出されません。 > > > 単純にaddしただけだとダメなのでしょうか? > > > > > > WICKET AJAX DEBUGのログでは呼出される時もダメな時も同じログが流れていました。 > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicket-ja-user @ lists.sourceforge.jp > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From aaakenaaa777 @ gmail.com Tue Apr 1 20:55:25 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Tue, 01 Apr 2008 20:55:25 +0900 Subject: [Wicket-ja-user 61] Re: =?iso-2022-jp?b?QWpheEZvcm1Db21wb25lbnRVcGRhdGluZ0JlaGF2aW9y?= =?iso-2022-jp?b?IBskQiRIGyhCUGF0dGVyblZhbGlkYXRvchskQiRyRjEbKEI=?= =?iso-2022-jp?b?GyRCO34kSztITVEbKEI=?= In-Reply-To: <6d26b9a70803312204j56de8bc8vc017dfbaaa1d2dd6@mail.gmail.com> References: <6d26b9a70803312204j56de8bc8vc017dfbaaa1d2dd6@mail.gmail.com> Message-ID: <47f22236.06ec720a.5d83.ffffef06@mx.google.com> maedaです。 u1さま返信ありがとうございました。 onErrorに処理を追加して無事に自分の思っていたとおりに実装することが出来ました!! 動作確認までしていただき本用にありがとうございます。 "yuichi tanaka" wrote: > u1です。 > > 申し訳ありません。 > 記憶で書いていたので見落としていた部分がありました。 > > > 実際は999999形式で入力しonblur時にチェックが行われエラーで変換が行われずに > > 今回は更にエラーが表示されるFeedbackPanelがadd、setOutputMarkupIdされておらず > > エラーが表示できていないということでしょうか? > 基本的には上記認識で良いのですが、そもそもValidationエラー時はonUpdateに来ないのですから、onUpdateのtargetにaddしても意味ありませんね。ここを見逃していました。 > > 追加で、AjaxFormComponentUpdatingBehaviorのonErrorをオーバーライドして、そのtargetにFeedbackPanelをaddしてください。Validationエラー時はここに来ます。 > @Override > protected void onError(AjaxRequestTarget target, > RuntimeException e) { > target.addComponent(feedback); > } > また、onUpdateのtargetにもaddしておかないと、いったん表示されたエラーが正常時にも消えないのでご注意下さい。 > > 今回は不安になって、1.3.2で動作確認したので問題無いと思います。 > > 08/04/01 に maeda さんは書きました: > > おはようございます、maedaです。 > > > > u1さま返信ありがとうございました。 > > > > 実装したかったことは > > 1.onblur時に999999形式で入力した数値を999/999と分数表記に変換する。(AjaxFormComponentUpdatingBehavior) > > 2.ボタン押下時に999/999形式かチェックを行う。(PatternValidator) > > > > 実際は999999形式で入力しonblur時にチェックが行われエラーで変換が行われずに > > 今回は更にエラーが表示されるFeedbackPanelがadd、setOutputMarkupIdされておらず > > エラーが表示できていないということでしょうか? > > > > > > > > > > > > "yuichi tanaka" wrote: > > > > > u1です。 > > > > > > 私もハマったことありますが、正常にValidationにひっかかってるんだけど、AjaxRequestTarget > > > にFeedBackPanelをaddしていない為、エラーメッセージを表示できていないだけだと思います。 > > > > > > これもよくやりましたが、setOutputMarkupId(true)を忘れずに! > > > > > > > > > > > > > > > 08/03/31 に maeda さんは書きました: > > > > maedaです。 > > > > > > > > 度々質問してしまった申し訳ないのですが・・・。 > > > > > > > > TextFieldに対して以下のことを同時に行い対のですが > > > > > > > > ・AjaxFormComponentUpdatingBehaviorを使用しonblur時に入力された文字の変換 > > > > ・PatternValidatorを使用しての入力チェック > > > > > > > > 両方ともTextFieldにaddするとAjaxFormComponentUpdatingBehaviorのonUpdateメソッドが > > > > PatternValidatorで設定したパターンの時の値か空の時しか呼出されなくなってしまいます。 > > > > > > > > 以下ソースです。 > > > > public Test28() { > > > > > > > > test28form = new Test28form(); > > > > > > > > Form form = new Form("form",new CompoundPropertyModel(test28form)); > > > > this.add(form); > > > > > > > > form.add(new FeedbackPanel("feedback")); > > > > > > > > final TextField textField = new TextField("text03"); > > > > textField.setOutputMarkupId(true); > > > > > > > > form.add(textField); > > > > > > > > AjaxFormComponentUpdatingBehavior ajaxFormComponentUpdatingBehavior = new AjaxFormComponentUpdatingBehavior("onblur"){ > > > > @Override > > > > protected void onUpdate(AjaxRequestTarget arg0) { > > > > String buf = textField.getValue(); > > > > > > > > //変換処理、省略・・・。 > > > > > > > > setModelObject(buf); > > > > arg0.addComponent(textField); > > > > } > > > > }; > > > > > > > > //AjaxFormComponentUpdatingBehaviorをadd > > > > textField.add(ajaxFormComponentUpdatingBehavior); > > > > //PatternValidatorをadd > > > > textField.add(new PatternValidator("[0-9]{3}/{1}[0-9]{3}")); > > > > } > > > > > > > > 今回のソースですと > > > > PatternValidatorで3桁数値/3桁数値以外をエラーにするとしているので > > > > AjaxFormComponentUpdatingBehaviorのonUpdateメソッドが3桁数値/3桁数値を入力した時と > > > > 空の時にロストフォーカス時しか呼出されません。 > > > > 単純にaddしただけだとダメなのでしょうか? > > > > > > > > WICKET AJAX DEBUGのログでは呼出される時もダメな時も同じログが流れていました。 > > > > > > > > _______________________________________________ > > > > Wicket-ja-user mailing list > > > > Wicket-ja-user @ lists.sourceforge.jp > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicket-ja-user @ lists.sourceforge.jp > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From benbrand @ mac.com Sat Apr 5 06:33:17 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Sat, 5 Apr 2008 06:33:17 +0900 Subject: [Wicket-ja-user 62] =?iso-2022-jp?b?d2lja2V0LWphGyRCJTUlJCVIJE4lPSE8JTklMyE8JUkbKEI=?= =?iso-2022-jp?b?GyRCJHJCZyQtJC9KUTk5JDckXiQ3JD8bKEI=?= Message-ID: <0B90B649-C8CB-4FFD-B1D3-C8602C093BFA@mac.com> 矢野です。 wicket-jaサイト(http://www.wicket-ja.org/)のサイトはWicketで作られていることは ご承知かと思いますが、いままでデータベースも使わないベタベタなコードのまま動いて いました。 ニュース内容とかもソースに直接書いていたくらいで... いろんな人から、一度データベースの設定とかやってもらわんことにはいじれない、という ことを言われまして、やっと作りました。 現在sourceforge.jpのSubversionにコミットしているコードでは、JPA(実装はHibernate)を 使ってデータベースからニュース他の情報を取得するようになっています。 データベースへの接続はデータソース経由で行うようになっていますので、データベースが 何か(PostgreSQLなのかMySQLなのか)に依存しないようになってます。ちなみに実稼働サーバ ではH2 Databaseが動いています。 サンプルとしてsrc/main/java/META-INFの下にtomcatのcontext.xmlが入っているので、 Tomcatで動かす場合はこれをご自分の環境に合わせて変更すると動きます。context.xmlは コミットしてもディプロイ時には無視されるので好きにしてください。 データベースのテーブル定義と、現在サイトで表示されている分のデータを登録する SQL文はソースと一緒にコミットしてあります。 ところで、この対応をしたせいで二つ問題がありまして、直せてません。 ・mvn jetty:runで起動してもデータソース定義がないので動かない ・テストが失敗する 直したいのですが、jetty:runでjettyを起動したときの設定ファイルをどう扱ったらいいのか よくわからないので直せていません。 mavenに詳しい方、できれば見てもらえると助かります。 なおメンバにはsourceforge.jpのWicket-jaに開発者として登録している人といない人が いるかと思いますが、コミットができないだけで、チェックアウトはどなたでもできます。 方法についてはWicket-ja Wikiに解説がありますので、下記URLからご覧ください。 http://sourceforge.jp/projects/wicket-ja/wiki/Wicket-ja%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%BE%97%E3%82%8B%E3%81%AB%E3%81%AF 次の課題は、ニュースとリンクを登録するためのページを作ることですね。Wicket-jaのサイトは みんなで作っていきましょ、ということになってますので、どなたでもソースを見てみてください。 もし実際に修正を行って、コミット権が欲しい、となった場合はこのメーリングリストにその旨を 書いてもらえればいいです。 よろしく! --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From tgenstake @ gmail.com Tue Apr 8 18:56:00 2008 From: tgenstake @ gmail.com (Tsukuru Takehana) Date: Tue, 08 Apr 2008 18:56:00 +0900 Subject: [Wicket-ja-user 63] =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc2V0VmlzaWJsZRskQiRyGyhC?= =?iso-2022-jp?b?GyRCSlE5OSRHJC0kXiQ5JCshKRsoQg==?= Message-ID: <47FB4130.1070206@gmail.com> たびたび失礼します。 竹花です。 仕様バージョン: 1.3.0 AjaxButtonで、与えられた値によってテキストの表示/非表示を変更したいので すが、AjaxButton内で一度非表示にしてしまうと再度表示されることがなくなっ てしまいます。 ex)  「a」を入力⇒ 「a」が表示される  「b」を入力⇒ 「b」は表示されない。以降「a」を入力しても何も表示されない。 WicketのAjax Debugのウィンドウを見ていると、表示されていなくても値は正常 に返ってきているのですがうまく行きません。 AjaxButton内でsetVisibleを変更するには、何か別の方法を使うべきなのでしょ うか? ご存知でしたら、ご教授おねがいします。 テスト用に書いたコードです。 public class ReRendering extends WebPage { public ReRendering() { Form form1 = new Form("form1"); final TextField text1 = new TextField("text1", new Model("")); final Label labelTest = new Label("test", new Model("")); labelTest.setOutputMarkupId(true); this.add(labelTest); form1.add(text1); form1.add(new AjaxButton("submit1", form1) { protected void onSubmit(AjaxRequestTarget target, Form form) { labelTest.setModelObject(text1.getModelObject()); //ハッシュコードの余が1の場合に表示 labelTest.setVisible(text1.getModelObject().hashCode() % 2 == 1); target.addComponent(labelTest); } }); this.add(form1); } } From benbrand @ mac.com Tue Apr 8 22:44:36 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Tue, 8 Apr 2008 22:44:36 +0900 Subject: [Wicket-ja-user 64] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc2V0VmlzaWJsZQ==?= =?iso-2022-jp?b?GyRCJHJKUTk5JEckLSReJDkkKyEpGyhC?= In-Reply-To: <47FB4130.1070206@gmail.com> References: <47FB4130.1070206@gmail.com> Message-ID: <292D8583-A3D9-44AA-B4DD-A676C4C5318E@mac.com> 矢野です。 > > AjaxButtonで、与えられた値によってテキストの表示/非表示を変更したいので > すが、AjaxButton内で一度非表示にしてしまうと再度表示されることがなくなっ > てしまいます。 あーこれは分かりにくいですよねえ。 通常時は、コンポーネントのvisibleプロパティをfalseにすると、レンダリング時にタグ自体が 消えてしまいます。消えたタグを操作できないので、消したあとは表示されなくなるんですね。 (もちろん、エレメントを再度つっこんでやれば表示されるんでしょうけどね) Ajaxで操作する場合、コンポーネントのsetMarkupId(true)を呼んでいますよね。ついでに setOutputMarkupPlaceholderTag(true)を呼ぶと、setVisible(false)をしたときにもタグを残して くれるようになります(CSSで非表示にするようになる)。 これでAjaxでコンポーネントを更新すると再表示されると思います。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From u1tnk1123 @ gmail.com Tue Apr 8 23:39:28 2008 From: u1tnk1123 @ gmail.com (yuichi tanaka) Date: Tue, 8 Apr 2008 23:39:28 +0900 Subject: [Wicket-ja-user 65] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc2V0VmlzaWJsZQ==?= =?iso-2022-jp?b?GyRCJHJKUTk5JEckLSReJDkkKyEpGyhC?= In-Reply-To: <292D8583-A3D9-44AA-B4DD-A676C4C5318E@mac.com> References: <47FB4130.1070206@gmail.com> <292D8583-A3D9-44AA-B4DD-A676C4C5318E@mac.com> Message-ID: <6d26b9a70804080739y45e64dfem71e6d1ac33c589cb@mail.gmail.com> u1です。 >setOutputMarkupPlaceholderTag(true) え!! 知らなかった…CSSで非表示にする機能を自作していたので、危なく無理だと返信するところでした。 ソース確認すると、1.2.7には無かったのいので、1.3系からの機能ですね。 無駄じゃ無かった事がわかり安心しました。 08/04/08 に Tsutomu Yano さんは書きました: > 矢野です。 > > > > > > AjaxButtonで、与えられた値によってテキストの表示/非表示を変更したいので > > すが、AjaxButton内で一度非表示にしてしまうと再度表示されることがなくなっ > > てしまいます。 > > > > あーこれは分かりにくいですよねえ。 > > 通常時は、コンポーネントのvisibleプロパティをfalseにすると、レンダリング時にタグ自体が > 消えてしまいます。消えたタグを操作できないので、消したあとは表示されなくなるんですね。 > (もちろん、エレメントを再度つっこんでやれば表示されるんでしょうけどね) > > Ajaxで操作する場合、コンポーネントのsetMarkupId(true)を呼んでいますよね。ついでに > setOutputMarkupPlaceholderTag(true)を呼ぶと、setVisible(false)をしたときにもタグを残して > くれるようになります(CSSで非表示にするようになる)。 > > これでAjaxでコンポーネントを更新すると再表示されると思います。 > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From tgenstake @ gmail.com Wed Apr 9 00:34:24 2008 From: tgenstake @ gmail.com (tj_takehana) Date: Wed, 9 Apr 2008 00:34:24 +0900 Subject: [Wicket-ja-user 66] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc2V0VmlzaWJsZQ==?= =?iso-2022-jp?b?GyRCJHJKUTk5JEckLSReJDkkKyEpGyhC?= In-Reply-To: <6d26b9a70804080739y45e64dfem71e6d1ac33c589cb@mail.gmail.com> References: <47FB4130.1070206@gmail.com> <292D8583-A3D9-44AA-B4DD-A676C4C5318E@mac.com> <6d26b9a70804080739y45e64dfem71e6d1ac33c589cb@mail.gmail.com> Message-ID: 竹花です。 お返事ありがとうございます! 今、手元に環境が無いので明日確認してみます。 確かにVisibleをfalseにした後、HTMLで見るとタグそのものが無くなっていました。 その後に新たにエレメントをaddしたら「存在する」とエラーがでて、addOrReplaceにしたらまったく表示されず困っていました。 1.3からの機能ですか… 1.3.3も出たようなのでこまめに安定版を入れていくようにしたいと思います。 PS:矢野様、執筆がんばってください! 7月をたのしみにしています! 08/04/08 に yuichi tanaka さんは書きました: > u1です。 > > >setOutputMarkupPlaceholderTag(true) > え!! > 知らなかった…CSSで非表示にする機能を自作していたので、危なく無理だと返信するところでした。 > > ソース確認すると、1.2.7には無かったのいので、1.3系からの機能ですね。 > 無駄じゃ無かった事がわかり安心しました。 > > 08/04/08 に Tsutomu Yano さんは書きました: > > 矢野です。 > > > > > > > > > > AjaxButtonで、与えられた値によってテキストの表示/非表示を変更したいので > > > すが、AjaxButton内で一度非表示にしてしまうと再度表示されることがなくなっ > > > てしまいます。 > > > > > > > > あーこれは分かりにくいですよねえ。 > > > > 通常時は、コンポーネントのvisibleプロパティをfalseにすると、レンダリング時にタグ自体が > > 消えてしまいます。消えたタグを操作できないので、消したあとは表示されなくなるんですね。 > > (もちろん、エレメントを再度つっこんでやれば表示されるんでしょうけどね) > > > > Ajaxで操作する場合、コンポーネントのsetMarkupId(true)を呼んでいますよね。ついでに > > setOutputMarkupPlaceholderTag(true)を呼ぶと、setVisible(false)をしたときにもタグを残して > > くれるようになります(CSSで非表示にするようになる)。 > > > > これでAjaxでコンポーネントを更新すると再表示されると思います。 > > > > --------------------------------------------------- > > 矢野 勉(やの つとむ) > > 電子メール:benbrand_at_mac.com > > --------------------------------------------------- > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From benbrand @ mac.com Wed Apr 9 01:43:31 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Wed, 9 Apr 2008 01:43:31 +0900 Subject: [Wicket-ja-user 67] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc2V0VmlzaWJsZQ==?= =?iso-2022-jp?b?GyRCJHJKUTk5JEckLSReJDkkKyEpGyhC?= In-Reply-To: <292D8583-A3D9-44AA-B4DD-A676C4C5318E@mac.com> References: <47FB4130.1070206@gmail.com> <292D8583-A3D9-44AA-B4DD-A676C4C5318E@mac.com> Message-ID: <49C06FC3-C6E4-4F40-80D5-757672C2A5E4@mac.com> 誤字修正です。 >> Ajaxで操作する場合、コンポーネントのsetMarkupId(true)を呼んでいますよね。ついでに >> setOutputMarkupPlaceholderTag(true)を呼ぶと、setVisible(false)をしたときにもタグを残して >> くれるようになります(CSSで非表示にするようになる)。 「setMarkupId(true)」のところは「setOutputMarkupId(true)」の書き間違いです。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From tgenstake @ gmail.com Wed Apr 9 15:27:57 2008 From: tgenstake @ gmail.com (tj_takehana) Date: Wed, 9 Apr 2008 15:27:57 +0900 Subject: [Wicket-ja-user 68] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc2V0VmlzaWJsZQ==?= =?iso-2022-jp?b?GyRCJHJKUTk5JEckLSReJDkkKyEpGyhC?= In-Reply-To: <49C06FC3-C6E4-4F40-80D5-757672C2A5E4@mac.com> References: <47FB4130.1070206@gmail.com> <292D8583-A3D9-44AA-B4DD-A676C4C5318E@mac.com> <49C06FC3-C6E4-4F40-80D5-757672C2A5E4@mac.com> Message-ID: 竹花です。 無事動作確認しました、ありがとうございます! これで「IEでエンターを押したときにフォームを勝手にサブミットする」バグも対応してくれたら… …ってWicketにIEのバグを押し付けるのは酷ですね。 08/04/09 に Tsutomu Yano さんは書きました: > 誤字修正です。 > > > >> Ajaxで操作する場合、コンポーネントのsetMarkupId(true)を呼んでいますよね。ついでに > >> setOutputMarkupPlaceholderTag(true)を呼ぶと、setVisible(false)をしたときにもタグを残して > >> くれるようになります(CSSで非表示にするようになる)。 > > > 「setMarkupId(true)」のところは「setOutputMarkupId(true)」の書き間違いです。 > > > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From ozaki @ yuroyoro.com Mon Apr 14 19:24:47 2008 From: ozaki @ yuroyoro.com (=?ISO-2022-JP?B?GyRCSHg6akNSP04bKEI=?=) Date: Mon, 14 Apr 2008 19:24:47 +0900 Subject: [Wicket-ja-user 69] =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDckPxsoQkZv?= =?iso-2022-jp?b?cm0bJEIkThsoQmVuY29kZRskQiRLJEQkJCRGGyhC?= Message-ID: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> はじめまして。尾崎と申します。 HTMLをShift_JISにして、AjaxButtonでsubmitすると、 Form内のテキストフィールド内の文字を問答無用でutf-8で encodeして送信しているようです。 サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と 指定しているため、Shift_JISと解釈して文字化けが発生します。 どうも、wicket-ajax.jsの370行目で return encodeURIComponent(text); としている部分が問題のようです。 このような現象の回避方法を、どなたかご存じないでしょうか? (そもそも全部utf-8で作ればいいんですけど・・・。) -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/wicket-ja-user/attachments/20080414/19795969/attachment.htm From shimizu.toshihiro @ gmail.com Tue Apr 15 13:38:51 2008 From: shimizu.toshihiro @ gmail.com (Toshihiro Shimizu) Date: Tue, 15 Apr 2008 13:38:51 +0900 Subject: [Wicket-ja-user 70] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE4bKEJlbmNvZGUbJEIkSyREGyhC?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= In-Reply-To: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> Message-ID: <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> 清水(meso)です。 HTMLをShift_JISで作成し、HTMLのHEAD内で と指定し、Applicationクラスのinitメソッド内で getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); と指定したところ、確かに文字化けすることを確認しました。 しかし、そのページのソースをブラウザから表示してみると、 は削除されており、ページのエンコードもUTF-8だと判定されていました。 なので、 getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); を getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); にすると、文字化けが解消されました。 「HTMLをShit_JISに」するというのが、ブラウザでのエンコード判定もShit_JISになっていることを意味しているのか分からなかったので、もしかしたら的外れな返答かもしれませんが、よかったら試してみてください。 08/04/14 に 尾崎智仁 さんは書きました: > はじめまして。尾崎と申します。 > > HTMLをShift_JISにして、AjaxButtonでsubmitすると、 > Form内のテキストフィールド内の文字を問答無用でutf-8で > encodeして送信しているようです。 > > サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と > 指定しているため、Shift_JISと解釈して文字化けが発生します。 > > どうも、wicket-ajax.jsの370行目で > return encodeURIComponent(text); > としている部分が問題のようです。 > > このような現象の回避方法を、どなたかご存じないでしょうか? > (そもそも全部utf-8で作ればいいんですけど・・・。) > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > From helmettomo @ gmail.com Tue Apr 15 15:54:07 2008 From: helmettomo @ gmail.com (=?ISO-2022-JP?B?GyRCSHg6akNSP04bKEI=?=) Date: Tue, 15 Apr 2008 15:54:07 +0900 Subject: [Wicket-ja-user 71] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE4bKEJlbmNvZGUbJEIkSyREGyhC?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= In-Reply-To: <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> Message-ID: <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> 尾崎です。 言葉足らずですみません・・・。 HTMLをShift_JISで作成し、HTMLのHEAD内で > > と指定し、Applicationクラスのinitメソッド内で > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > と指定したところ、確かに文字化けすることを確認しました。 上記のとおりです。 もう少し詳細に書くと、 テンプレート・ファイルを文字コードShift_JISで、XHTMLで作成しました。 XML宣言にもencoding="Shift_JIS"を指定しています。 さらに、 getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しています。 この状態だと、ブラウザに出力されるHTMLはShift_JISとなります。 (ブラウザ側もShift_JISで解釈しています。) で、submitを行うと、フォームのデータをutf-8でencodeした POSTデータが、サーバに送信されます。 wicket-ajax.jsの370行目で行われているencodeURIComponent(text);で、 POSTデータはutf-8にされているようです。 (encodeURIComponent でエンコードされたデータは、 クライアントのキャラクタセットにかかわらず、utf-8 になります) しかし、サーバ側ではgetRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しているため、 Wicket側でHttpServletRequest.setCharacterEncoding("Shift_JIS")を設定し、 結果POSTデータをShift_JISとしてエンコードしようとして文字化けとなっていると思われます。 これって、Wicketのバグなんでしょうか? とりあえず、getRequestCycleSettings().setResponseRequestEncoding("utf-8");で 対応しましたが、ちょっと気持ち悪い感じです。 まぁ、いまは全部utf-8で作っとけってことなんですかね。 08/04/15 に Toshihiro Shimizu さんは書きました: > > 清水(meso)です。 > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > と指定し、Applicationクラスのinitメソッド内で > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > と指定したところ、確かに文字化けすることを確認しました。 > > しかし、そのページのソースをブラウザから表示してみると、 > > は削除されており、ページのエンコードもUTF-8だと判定されていました。 > > なので、 > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > を > getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); > にすると、文字化けが解消されました。 > > > 「HTMLをShit_JISに」するというのが、ブラウザでのエンコード判定もShit_JISになっていることを意味しているのか分からなかったので、もしかしたら的外れな返答かもしれませんが、よかったら試してみてください。 > > 08/04/14 に 尾崎智仁 さんは書きました: > > > はじめまして。尾崎と申します。 > > > > HTMLをShift_JISにして、AjaxButtonでsubmitすると、 > > Form内のテキストフィールド内の文字を問答無用でutf-8で > > encodeして送信しているようです。 > > > > > サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と > > 指定しているため、Shift_JISと解釈して文字化けが発生します。 > > > > どうも、wicket-ajax.jsの370行目で > > return encodeURIComponent(text); > > としている部分が問題のようです。 > > > > このような現象の回避方法を、どなたかご存じないでしょうか? > > (そもそも全部utf-8で作ればいいんですけど・・・。) > > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/wicket-ja-user/attachments/20080415/77cd3c38/attachment.htm From shimizu.toshihiro @ gmail.com Tue Apr 15 18:25:23 2008 From: shimizu.toshihiro @ gmail.com (Toshihiro Shimizu) Date: Tue, 15 Apr 2008 18:25:23 +0900 Subject: [Wicket-ja-user 72] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE4bKEJlbmNvZGUbJEIkSyREGyhC?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= In-Reply-To: <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> Message-ID: <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> 清水(meso)です。 なるほど、ブラウザ判定でShift_JISなんですね。それはかなり茨の道ですね。 おっしゃるとおり、今はUTF-8で作っとくのがベストだと思います。 とはいえ、Shift_JISでもなんとかならんかなと、いじってみました。 AjaxButtonのonSubmitメソッドを @Override protected void onSubmit(AjaxRequestTarget target, Form form) { try { byte[] bytes = textField.getModelObjectAsString().getBytes( "Shift_JIS"); result.setModelObject(new String(bytes, "UTF-8")); target.addComponent(result); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } こんな感じにしたら、「ああああ」と入力すれば「ああああ」と文字化けせずに表示できました。 が、「あいうえおかきくけこ」を入力したら「あい????おかきくけこ」と表示されました・・・。 でもこれってWicketのせいじゃないだろうから、なんとかしようがありそうな気も。 08/04/15 に 尾崎智仁 さんは書きました: > 尾崎です。 > > 言葉足らずですみません・・・。 > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > と指定し、Applicationクラスのinitメソッド内で > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > と指定したところ、確かに文字化けすることを確認しました。 > 上記のとおりです。 > > もう少し詳細に書くと、 > テンプレート・ファイルを文字コードShift_JISで、XHTMLで作成しました。 > XML宣言にもencoding="Shift_JIS"を指定しています。 > さらに、 > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しています。 > > この状態だと、ブラウザに出力されるHTMLはShift_JISとなります。 > (ブラウザ側もShift_JISで解釈しています。) > > で、submitを行うと、フォームのデータをutf-8でencodeした > POSTデータが、サーバに送信されます。 > > wicket-ajax.jsの370行目で行われているencodeURIComponent(text);で、 > POSTデータはutf-8にされているようです。 > (encodeURIComponent でエンコードされたデータは、 > クライアントのキャラクタセットにかかわらず、utf-8 になります) > > しかし、サーバ側ではgetRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しているため、 > Wicket側でHttpServletRequest.setCharacterEncoding("Shift_JIS")を設定し、 > 結果POSTデータをShift_JISとしてエンコードしようとして文字化けとなっていると思われます。 > > これって、Wicketのバグなんでしょうか? > > とりあえず、getRequestCycleSettings().setResponseRequestEncoding("utf-8");で > 対応しましたが、ちょっと気持ち悪い感じです。 > まぁ、いまは全部utf-8で作っとけってことなんですかね。 > > 08/04/15 に Toshihiro Shimizu さんは書きました: > > 清水(meso)です。 > > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > と指定し、Applicationクラスのinitメソッド内で > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > と指定したところ、確かに文字化けすることを確認しました。 > > > > しかし、そのページのソースをブラウザから表示してみると、 > > > > は削除されており、ページのエンコードもUTF-8だと判定されていました。 > > > > なので、 > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > を > > > getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); > > にすると、文字化けが解消されました。 > > > > > 「HTMLをShit_JISに」するというのが、ブラウザでのエンコード判定もShit_JISになっていることを意味しているのか分からなかったので、もしかしたら的外れな返答かもしれませんが、よかったら試してみてください。 > > > > 08/04/14 に 尾崎智仁 さんは書きました: > > > > > はじめまして。尾崎と申します。 > > > > > > HTMLをShift_JISにして、AjaxButtonでsubmitすると、 > > > Form内のテキストフィールド内の文字を問答無用でutf-8で > > > encodeして送信しているようです。 > > > > > > > サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と > > > 指定しているため、Shift_JISと解釈して文字化けが発生します。 > > > > > > どうも、wicket-ajax.jsの370行目で > > > return encodeURIComponent(text); > > > としている部分が問題のようです。 > > > > > > このような現象の回避方法を、どなたかご存じないでしょうか? > > > (そもそも全部utf-8で作ればいいんですけど・・・。) > > > > > > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicket-ja-user @ lists.sourceforge.jp > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > From ozaki @ yuroyoro.com Tue Apr 15 19:23:33 2008 From: ozaki @ yuroyoro.com (=?ISO-2022-JP?B?GyRCSHg6akNSP04bKEI=?=) Date: Tue, 15 Apr 2008 19:23:33 +0900 Subject: [Wicket-ja-user 73] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE4bKEJlbmNvZGUbJEIkSyREGyhC?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= In-Reply-To: <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> Message-ID: <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> 尾崎です。 アドバイスいただき、ありがとうございました。 自前でgetByte("utf-8")とする方法も考えたのですが、 Filterを追加することで対応しました。 ようは、AjaxButtonなどWicket.Ajax.Call.submitForm()で送信されるPOSTデータのみ、 utf-8でエンコードできればよく、それ以外はShift_JISでOKと考え、 WicketFilterの前に以下のようなFilterを追加すると、うまく行きました。 Ajaxでの送信時には、リクエストヘッダーにWicket-Ajax : trueと設定されることを 利用して、Ajaxでの送信か判定しています。 ///////以下FilterのdoFilter()///// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest)request; String ajaxHeader = httpServletRequest.getHeader("Wicket-Ajax"); if (ajaxHeader != null && ajaxHeader.length() > 0 && ajaxHeader.equalsIgnoreCase("true")) { httpServletRequest.setCharacterEncoding("utf-8"); request = new HttpServletRequestWrapper(httpServletRequest){ /* (非 Javadoc) * @see javax.servlet.ServletRequestWrapper#setCharacterEncoding(java.lang.String) */ @Override public void setCharacterEncoding(String enc) throws UnsupportedEncodingException { // 何もしない } }; } chain.doFilter(request, response); } 08/04/15 に Toshihiro Shimizu さんは書きました: > > 清水(meso)です。 > > なるほど、ブラウザ判定でShift_JISなんですね。それはかなり茨の道ですね。 > おっしゃるとおり、今はUTF-8で作っとくのがベストだと思います。 > とはいえ、Shift_JISでもなんとかならんかなと、いじってみました。 > > AjaxButtonのonSubmitメソッドを > > @Override > protected void onSubmit(AjaxRequestTarget target, Form form) { > try { > byte[] bytes = > textField.getModelObjectAsString().getBytes( > "Shift_JIS"); > result.setModelObject(new String(bytes, "UTF-8")); > target.addComponent(result); > } catch (UnsupportedEncodingException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > > こんな感じにしたら、「ああああ」と入力すれば「ああああ」と文字化けせずに表示できました。 > が、「あいうえおかきくけこ」を入力したら「あい????おかきくけこ」と表示されました・・・。 > でもこれってWicketのせいじゃないだろうから、なんとかしようがありそうな気も。 > > 08/04/15 に 尾崎智仁 さんは書きました: > > > 尾崎です。 > > > > 言葉足らずですみません・・・。 > > > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > > > と指定し、Applicationクラスのinitメソッド内で > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > と指定したところ、確かに文字化けすることを確認しました。 > > 上記のとおりです。 > > > > もう少し詳細に書くと、 > > テンプレート・ファイルを文字コードShift_JISで、XHTMLで作成しました。 > > XML宣言にもencoding="Shift_JIS"を指定しています。 > > さらに、 > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しています。 > > > > この状態だと、ブラウザに出力されるHTMLはShift_JISとなります。 > > (ブラウザ側もShift_JISで解釈しています。) > > > > で、submitを行うと、フォームのデータをutf-8でencodeした > > POSTデータが、サーバに送信されます。 > > > > wicket-ajax.jsの370行目で行われているencodeURIComponent(text);で、 > > POSTデータはutf-8にされているようです。 > > (encodeURIComponent でエンコードされたデータは、 > > クライアントのキャラクタセットにかかわらず、utf-8 になります) > > > > > しかし、サーバ側ではgetRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しているため、 > > Wicket側でHttpServletRequest.setCharacterEncoding("Shift_JIS")を設定し、 > > 結果POSTデータをShift_JISとしてエンコードしようとして文字化けとなっていると思われます。 > > > > これって、Wicketのバグなんでしょうか? > > > > とりあえず、getRequestCycleSettings().setResponseRequestEncoding("utf-8");で > > 対応しましたが、ちょっと気持ち悪い感じです。 > > まぁ、いまは全部utf-8で作っとけってことなんですかね。 > > > > 08/04/15 に Toshihiro Shimizu さんは書きました: > > > 清水(meso)です。 > > > > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > > > と指定し、Applicationクラスのinitメソッド内で > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > と指定したところ、確かに文字化けすることを確認しました。 > > > > > > しかし、そのページのソースをブラウザから表示してみると、 > > > > > > は削除されており、ページのエンコードもUTF-8だと判定されていました。 > > > > > > なので、 > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > を > > > > > getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); > > > にすると、文字化けが解消されました。 > > > > > > > > > 「HTMLをShit_JISに」するというのが、ブラウザでのエンコード判定もShit_JISになっていることを意味しているのか分からなかったので、もしかしたら的外れな返答かもしれませんが、よかったら試してみてください。 > > > > > > 08/04/14 に 尾崎智仁 さんは書きました: > > > > > > > はじめまして。尾崎と申します。 > > > > > > > > HTMLをShift_JISにして、AjaxButtonでsubmitすると、 > > > > Form内のテキストフィールド内の文字を問答無用でutf-8で > > > > encodeして送信しているようです。 > > > > > > > > > > > サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と > > > > 指定しているため、Shift_JISと解釈して文字化けが発生します。 > > > > > > > > どうも、wicket-ajax.jsの370行目で > > > > return encodeURIComponent(text); > > > > としている部分が問題のようです。 > > > > > > > > このような現象の回避方法を、どなたかご存じないでしょうか? > > > > (そもそも全部utf-8で作ればいいんですけど・・・。) > > > > > > > > > > > > > > > _______________________________________________ > > > > Wicket-ja-user mailing list > > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/wicket-ja-user/attachments/20080415/0bdc56cf/attachment.htm From shimizu.toshihiro @ gmail.com Tue Apr 15 19:39:24 2008 From: shimizu.toshihiro @ gmail.com (Toshihiro Shimizu) Date: Tue, 15 Apr 2008 19:39:24 +0900 Subject: [Wicket-ja-user 74] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE4bKEJlbmNvZGUbJEIkSyREGyhC?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= In-Reply-To: <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> Message-ID: <61956a250804150339g20b3d0bcve7464c1504c2ad7f@mail.gmail.com> 清水(meso)です。 なるほど! Filterで処理するのはいい考えですね。 こちらでも上手くいくことを確認しました。 しかし、これは対処療法であって、WicketのAjaxリクエストがUTF-8以外を上手に扱えないという事実は変わりませんね。 矢野さんあたりが何とかしてくれないかなぁ(と無茶ぶりしてみる)。 08/04/15 に 尾崎智仁 さんは書きました: > 尾崎です。 > > アドバイスいただき、ありがとうございました。 > > 自前でgetByte("utf-8")とする方法も考えたのですが、 > Filterを追加することで対応しました。 > > ようは、AjaxButtonなどWicket.Ajax.Call.submitForm()で送信されるPOSTデータのみ、 > utf-8でエンコードできればよく、それ以外はShift_JISでOKと考え、 > WicketFilterの前に以下のようなFilterを追加すると、うまく行きました。 > > Ajaxでの送信時には、リクエストヘッダーにWicket-Ajax : trueと設定されることを > 利用して、Ajaxでの送信か判定しています。 > > ///////以下FilterのdoFilter()///// > public void doFilter(ServletRequest request, ServletResponse response, > FilterChain chain) throws IOException, ServletException { > > HttpServletRequest httpServletRequest = (HttpServletRequest)request; > String ajaxHeader = > httpServletRequest.getHeader("Wicket-Ajax"); > > if (ajaxHeader != null && ajaxHeader.length() > 0 && > ajaxHeader.equalsIgnoreCase("true")) > { > > httpServletRequest.setCharacterEncoding("utf-8"); > request = new > HttpServletRequestWrapper(httpServletRequest){ > > /* (非 Javadoc) > * @see > javax.servlet.ServletRequestWrapper#setCharacterEncoding(java.lang.String) > */ > @Override > public void setCharacterEncoding(String enc) > throws UnsupportedEncodingException { > // 何もしない > } > > }; > } > > chain.doFilter(request, response); > } > > 08/04/15 に Toshihiro Shimizu さんは書きました: > > 清水(meso)です。 > > > > なるほど、ブラウザ判定でShift_JISなんですね。それはかなり茨の道ですね。 > > おっしゃるとおり、今はUTF-8で作っとくのがベストだと思います。 > > とはいえ、Shift_JISでもなんとかならんかなと、いじってみました。 > > > > AjaxButtonのonSubmitメソッドを > > > > @Override > > protected void onSubmit(AjaxRequestTarget target, Form form) { > > try { > > byte[] bytes = > textField.getModelObjectAsString().getBytes( > > "Shift_JIS"); > > result.setModelObject(new > String(bytes, "UTF-8")); > > target.addComponent(result); > > } catch (UnsupportedEncodingException e) { > > // TODO Auto-generated catch block > > e.printStackTrace(); > > } > > } > > > > こんな感じにしたら、「ああああ」と入力すれば「ああああ」と文字化けせずに表示できました。 > > が、「あいうえおかきくけこ」を入力したら「あい????おかきくけこ」と表示されました・・・。 > > でもこれってWicketのせいじゃないだろうから、なんとかしようがありそうな気も。 > > > > 08/04/15 に 尾崎智仁 さんは書きました: > > > > > 尾崎です。 > > > > > > 言葉足らずですみません・・・。 > > > > > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > > > > > と指定し、Applicationクラスのinitメソッド内で > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > > と指定したところ、確かに文字化けすることを確認しました。 > > > 上記のとおりです。 > > > > > > もう少し詳細に書くと、 > > > テンプレート・ファイルを文字コードShift_JISで、XHTMLで作成しました。 > > > XML宣言にもencoding="Shift_JIS"を指定しています。 > > > さらに、 > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しています。 > > > > > > この状態だと、ブラウザに出力されるHTMLはShift_JISとなります。 > > > (ブラウザ側もShift_JISで解釈しています。) > > > > > > で、submitを行うと、フォームのデータをutf-8でencodeした > > > POSTデータが、サーバに送信されます。 > > > > > > wicket-ajax.jsの370行目で行われているencodeURIComponent(text);で、 > > > POSTデータはutf-8にされているようです。 > > > (encodeURIComponent でエンコードされたデータは、 > > > クライアントのキャラクタセットにかかわらず、utf-8 になります) > > > > > > > しかし、サーバ側ではgetRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しているため、 > > > > Wicket側でHttpServletRequest.setCharacterEncoding("Shift_JIS")を設定し、 > > > 結果POSTデータをShift_JISとしてエンコードしようとして文字化けとなっていると思われます。 > > > > > > これって、Wicketのバグなんでしょうか? > > > > > > > とりあえず、getRequestCycleSettings().setResponseRequestEncoding("utf-8");で > > > 対応しましたが、ちょっと気持ち悪い感じです。 > > > まぁ、いまは全部utf-8で作っとけってことなんですかね。 > > > > > > 08/04/15 に Toshihiro Shimizu さんは書きました: > > > > 清水(meso)です。 > > > > > > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > > > > > と指定し、Applicationクラスのinitメソッド内で > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > > と指定したところ、確かに文字化けすることを確認しました。 > > > > > > > > しかし、そのページのソースをブラウザから表示してみると、 > > > > > > > > は削除されており、ページのエンコードもUTF-8だと判定されていました。 > > > > > > > > なので、 > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > > を > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); > > > > にすると、文字化けが解消されました。 > > > > > > > > > > > > 「HTMLをShit_JISに」するというのが、ブラウザでのエンコード判定もShit_JISになっていることを意味しているのか分からなかったので、もしかしたら的外れな返答かもしれませんが、よかったら試してみてください。 > > > > > > > > 08/04/14 に 尾崎智仁 さんは書きました: > > > > > > > > > はじめまして。尾崎と申します。 > > > > > > > > > > HTMLをShift_JISにして、AjaxButtonでsubmitすると、 > > > > > Form内のテキストフィールド内の文字を問答無用でutf-8で > > > > > encodeして送信しているようです。 > > > > > > > > > > > > > > サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と > > > > > 指定しているため、Shift_JISと解釈して文字化けが発生します。 > > > > > > > > > > どうも、wicket-ajax.jsの370行目で > > > > > return encodeURIComponent(text); > > > > > としている部分が問題のようです。 > > > > > > > > > > このような現象の回避方法を、どなたかご存じないでしょうか? > > > > > (そもそも全部utf-8で作ればいいんですけど・・・。) > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > Wicket-ja-user mailing list > > > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > Wicket-ja-user mailing list > > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicket-ja-user @ lists.sourceforge.jp > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > From tgenstake @ gmail.com Tue Apr 15 21:34:59 2008 From: tgenstake @ gmail.com (tj_takehana) Date: Tue, 15 Apr 2008 21:34:59 +0900 Subject: [Wicket-ja-user 75] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE4bKEJlbmNvZGUbJEIkSyREGyhC?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= In-Reply-To: <61956a250804150339g20b3d0bcve7464c1504c2ad7f@mail.gmail.com> References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> <61956a250804150339g20b3d0bcve7464c1504c2ad7f@mail.gmail.com> Message-ID: どうも竹花です。 ちょっと気になったので調べてみたのですが、こちらのフォーラムに開発者Matej Knoppさんの回答(?)がありました。 http://markmail.org/message/ml7ofypidrcoia5e 要点は以下二つです。 ・通常、ユーザが(Ajaxで)使うのはUTF-8 ・UTF-8はよりセキュア 確かにXMLの推奨コードはUTF-8/16ですので、Ajaxは基本UTF-8でいいのかもしれません。 しかし、Ajax通信がUTF-8で行われるのがデフォルトならば、尾崎様が書いたようなフィルターもデフォルトで存在するべきなような気がします。 それか、最初からsetResponseRequestEncodingがAjaxButtonに適用されないようにするとか。 意見すべきなのか、解決策があるのか… 確認のため、簡易AjaxButtonページをつくりAjax通信時のログを見てみたのですが、尾崎様のおっしゃるとおり、ページの文字コードに関わらずパラメータはすべてUTF-8にURIエンコードされていました。 (SJIS, EUC, UTF-8のみなので"すべて"とは言い切っていいものか疑問ですが。) 08/04/15 に Toshihiro Shimizu さんは書きました: > 清水(meso)です。 > > なるほど! > Filterで処理するのはいい考えですね。 > こちらでも上手くいくことを確認しました。 > > しかし、これは対処療法であって、WicketのAjaxリクエストがUTF-8以外を上手に扱えないという事実は変わりませんね。 > > 矢野さんあたりが何とかしてくれないかなぁ(と無茶ぶりしてみる)。 > > 08/04/15 に 尾崎智仁 さんは書きました: > > > 尾崎です。 > > > > アドバイスいただき、ありがとうございました。 > > > > 自前でgetByte("utf-8")とする方法も考えたのですが、 > > Filterを追加することで対応しました。 > > > > ようは、AjaxButtonなどWicket.Ajax.Call.submitForm()で送信されるPOSTデータのみ、 > > utf-8でエンコードできればよく、それ以外はShift_JISでOKと考え、 > > WicketFilterの前に以下のようなFilterを追加すると、うまく行きました。 > > > > Ajaxでの送信時には、リクエストヘッダーにWicket-Ajax : trueと設定されることを > > 利用して、Ajaxでの送信か判定しています。 > > > > ///////以下FilterのdoFilter()///// > > public void doFilter(ServletRequest request, ServletResponse response, > > FilterChain chain) throws IOException, ServletException { > > > > HttpServletRequest httpServletRequest = (HttpServletRequest)request; > > String ajaxHeader = > > httpServletRequest.getHeader("Wicket-Ajax"); > > > > if (ajaxHeader != null && ajaxHeader.length() > 0 && > > ajaxHeader.equalsIgnoreCase("true")) > > { > > > > httpServletRequest.setCharacterEncoding("utf-8"); > > request = new > > HttpServletRequestWrapper(httpServletRequest){ > > > > /* (非 Javadoc) > > * @see > > javax.servlet.ServletRequestWrapper#setCharacterEncoding(java.lang.String) > > */ > > @Override > > public void setCharacterEncoding(String enc) > > throws UnsupportedEncodingException { > > // 何もしない > > } > > > > }; > > } > > > > chain.doFilter(request, response); > > } > > > > 08/04/15 に Toshihiro Shimizu さんは書きました: > > > 清水(meso)です。 > > > > > > なるほど、ブラウザ判定でShift_JISなんですね。それはかなり茨の道ですね。 > > > おっしゃるとおり、今はUTF-8で作っとくのがベストだと思います。 > > > とはいえ、Shift_JISでもなんとかならんかなと、いじってみました。 > > > > > > AjaxButtonのonSubmitメソッドを > > > > > > @Override > > > protected void onSubmit(AjaxRequestTarget target, Form form) { > > > try { > > > byte[] bytes = > > textField.getModelObjectAsString().getBytes( > > > "Shift_JIS"); > > > result.setModelObject(new > > String(bytes, "UTF-8")); > > > target.addComponent(result); > > > } catch (UnsupportedEncodingException e) { > > > // TODO Auto-generated catch block > > > e.printStackTrace(); > > > } > > > } > > > > > > こんな感じにしたら、「ああああ」と入力すれば「ああああ」と文字化けせずに表示できました。 > > > が、「あいうえおかきくけこ」を入力したら「あい????おかきくけこ」と表示されました・・・。 > > > でもこれってWicketのせいじゃないだろうから、なんとかしようがありそうな気も。 > > > > > > 08/04/15 に 尾崎智仁 さんは書きました: > > > > > > > 尾崎です。 > > > > > > > > 言葉足らずですみません・・・。 > > > > > > > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > > > > > > > と指定し、Applicationクラスのinitメソッド内で > > > > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > > > と指定したところ、確かに文字化けすることを確認しました。 > > > > 上記のとおりです。 > > > > > > > > もう少し詳細に書くと、 > > > > テンプレート・ファイルを文字コードShift_JISで、XHTMLで作成しました。 > > > > XML宣言にもencoding="Shift_JIS"を指定しています。 > > > > さらに、 > > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しています。 > > > > > > > > この状態だと、ブラウザに出力されるHTMLはShift_JISとなります。 > > > > (ブラウザ側もShift_JISで解釈しています。) > > > > > > > > で、submitを行うと、フォームのデータをutf-8でencodeした > > > > POSTデータが、サーバに送信されます。 > > > > > > > > wicket-ajax.jsの370行目で行われているencodeURIComponent(text);で、 > > > > POSTデータはutf-8にされているようです。 > > > > (encodeURIComponent でエンコードされたデータは、 > > > > クライアントのキャラクタセットにかかわらず、utf-8 になります) > > > > > > > > > > しかし、サーバ側ではgetRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と指定しているため、 > > > > > > Wicket側でHttpServletRequest.setCharacterEncoding("Shift_JIS")を設定し、 > > > > 結果POSTデータをShift_JISとしてエンコードしようとして文字化けとなっていると思われます。 > > > > > > > > これって、Wicketのバグなんでしょうか? > > > > > > > > > > とりあえず、getRequestCycleSettings().setResponseRequestEncoding("utf-8");で > > > > 対応しましたが、ちょっと気持ち悪い感じです。 > > > > まぁ、いまは全部utf-8で作っとけってことなんですかね。 > > > > > > > > 08/04/15 に Toshihiro Shimizu さんは書きました: > > > > > 清水(meso)です。 > > > > > > > > > > HTMLをShift_JISで作成し、HTMLのHEAD内で > > > > > > > > > > と指定し、Applicationクラスのinitメソッド内で > > > > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > > > と指定したところ、確かに文字化けすることを確認しました。 > > > > > > > > > > しかし、そのページのソースをブラウザから表示してみると、 > > > > > > > > > > は削除されており、ページのエンコードもUTF-8だと判定されていました。 > > > > > > > > > > なので、 > > > > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS"); > > > > > を > > > > > > > > > > > getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); > > > > > にすると、文字化けが解消されました。 > > > > > > > > > > > > > > > > 「HTMLをShit_JISに」するというのが、ブラウザでのエンコード判定もShit_JISになっていることを意味しているのか分からなかったので、もしかしたら的外れな返答かもしれませんが、よかったら試してみてください。 > > > > > > > > > > 08/04/14 に 尾崎智仁 さんは書きました: > > > > > > > > > > > はじめまして。尾崎と申します。 > > > > > > > > > > > > HTMLをShift_JISにして、AjaxButtonでsubmitすると、 > > > > > > Form内のテキストフィールド内の文字を問答無用でutf-8で > > > > > > encodeして送信しているようです。 > > > > > > > > > > > > > > > > > > サーバ側では、getRequestCycleSettings().setResponseRequestEncoding("Shift_JIS");と > > > > > > 指定しているため、Shift_JISと解釈して文字化けが発生します。 > > > > > > > > > > > > どうも、wicket-ajax.jsの370行目で > > > > > > return encodeURIComponent(text); > > > > > > としている部分が問題のようです。 > > > > > > > > > > > > このような現象の回避方法を、どなたかご存じないでしょうか? > > > > > > (そもそも全部utf-8で作ればいいんですけど・・・。) > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > Wicket-ja-user mailing list > > > > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > > > > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > Wicket-ja-user mailing list > > > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > > > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > > > > > > > > _______________________________________________ > > > > Wicket-ja-user mailing list > > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicket-ja-user @ lists.sourceforge.jp > > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From benbrand @ mac.com Tue Apr 15 21:59:21 2008 From: benbrand @ mac.com (=?ISO-2022-JP?B?GyRCTHBMbhsoQiAbJEJKWRsoQg==?=) Date: Tue, 15 Apr 2008 21:59:21 +0900 Subject: [Wicket-ja-user 76] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE5lbmNvZGUkSyREJCQkRhsoQg==?= In-Reply-To: References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> <61956a250804150339g20b3d0bcve7464c1504c2ad7f@mail.gmail.com> Message-ID: 矢野です。 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 --------------------------------------------------- From ozaki @ yuroyoro.com Tue Apr 15 23:46:30 2008 From: ozaki @ yuroyoro.com (=?ISO-2022-JP?B?GyRCSHg6akNSP04bKEI=?=) Date: Tue, 15 Apr 2008 23:46:30 +0900 Subject: [Wicket-ja-user 77] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE5lbmNvZGUkSyREJCQkRhsoQg==?= In-Reply-To: References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> <61956a250804150339g20b3d0bcve7464c1504c2ad7f@mail.gmail.com> Message-ID: <8c2208bb0804150746n6eb35edclb31545a6db151c43@mail.gmail.com> 尾崎です。 やはり、encodeURIComponent()を使用している以上、 サーバ側ではUTF-8でエンコードするのが正しい動作ですね。 ただ、フォームをUTF-8で送信すると、Shift_JIS固有の文字で 化けそうではありますが。 英語力にはまったく自信がないので、バグ報告していただけるのは 助かります。 対応されたら、バージョンアップしようと思います。 皆さん、どうもありがとうございました。 08/04/15 に 矢野 勉 さんは書きました: > > 矢野です。 > > 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 mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/wicket-ja-user/attachments/20080415/1cd18e29/attachment.htm From u1tnk1123 @ gmail.com Thu Apr 24 01:10:16 2008 From: u1tnk1123 @ gmail.com (yuichi tanaka) Date: Thu, 24 Apr 2008 01:10:16 +0900 Subject: [Wicket-ja-user 78] =?iso-2022-jp?b?V2lja2V0VGVzdGVyGyRCJE4bKEJDb29raWUbJEI9aE19GyhC?= =?iso-2022-jp?b?GyRCJEskRCQkJEYbKEI=?= Message-ID: <6d26b9a70804230910i474054f4xeec61a5da3281361@mail.gmail.com> こんばんは。田中(u1)です。 WicketTesterのCookie処理で困っています。 ログイン時にログイン情報をクッキーに保存し、クッキーの値が取得できないと強制ログアウトするような作りのアプリを作っています。ここで、ログイン処理の単体テストを作成しようとしたのですが、うまくいきません。 ログイン処理成功時にクッキーを保存し、forwardしてログイン後ページに遷移する際に認証が必要なページなのでクッキーを参照するのですが、WicketTesterのMockHttpServletResponseにクッキーを設定してもMockHttpServletRequestにクッキーが反映されない(JBOSS、Jettyだと反映される)為、強制ログアウトされてしまいます。 リクエスト前に普通にCookieを設定する方法については、以下のようにWicketTesterのsetupRequestAndResponseで無理矢理Cookieを設定してやれば使用できることはわかりましたが、1リクエスト中にCookie設定→参照となると方法が見つかりません。 @Override public WebRequestCycle setupRequestAndResponse(final boolean isAjax) { WebRequestCycle cycle = super.setupRequestAndResponse(isAjax); if (!cookies.isEmpty()) { ((MockHttpServletRequest) ((WebRequest) cycle.getRequest()).getHttpServletRequest()).setCookies(cookies .toArray(new Cookie[cookies.size()])); } return cycle; } MockHttpServletResponse、Request自体を拡張しようかと考えましたが、WicketTesterの親クラスであるMockWebApplicationクラスのコンストラクタで生成してprivateメンバに設定、コンストラクタ中で使用されており、手が出せませんでした。 良い方法をご存じの方はいらっしゃらないでしょうか? From benbrand @ mac.com Thu Apr 24 02:49:15 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Thu, 24 Apr 2008 02:49:15 +0900 Subject: [Wicket-ja-user 79] Re: =?iso-2022-jp?b?V2lja2V0VGVzdGVyGyRCJE4bKEJDb29raWU=?= =?iso-2022-jp?b?GyRCPWhNfSRLJEQkJCRGGyhC?= In-Reply-To: <6d26b9a70804230910i474054f4xeec61a5da3281361@mail.gmail.com> References: <6d26b9a70804230910i474054f4xeec61a5da3281361@mail.gmail.com> Message-ID: こんばんは。矢野です。 もし可能なら、いまパスしない状態のテストコードの方をここに貼ることはできないでしょうか? 全部が無理なら、簡易コードでも結構です。 完全にヤマカンですが、たぶん次ページに行くときにRequestCycleが再作成されるのでそこで HttpRequestも変わるのでCookieがロストしているような気がしているのですが... --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From u1tnk1123 @ gmail.com Thu Apr 24 10:40:20 2008 From: u1tnk1123 @ gmail.com (yuichi tanaka) Date: Thu, 24 Apr 2008 10:40:20 +0900 Subject: [Wicket-ja-user 80] Re: =?iso-2022-jp?b?V2lja2V0VGVzdGVyGyRCJE4bKEJDb29raWU=?= =?iso-2022-jp?b?GyRCPWhNfSRLJEQkJCRGGyhC?= In-Reply-To: References: <6d26b9a70804230910i474054f4xeec61a5da3281361@mail.gmail.com> Message-ID: <6d26b9a70804231840l2364d4c7tf88ab2e9608ae2c9@mail.gmail.com> 田中です。 返信ありがとうございます。 テストコードは下記です。 都合の悪い部分の削除、コメントの追加をしています。 tester = new WicketTester(new MyApplication()); tester.startPage(LogInPage.class);//ログインページへリクエスト tester.assertRenderedPage(LogInPage.class);//ログインページを表示しているか確認→成功 tester.setParameterForNextRequest("form:userName", "hoge");//ログインページへアカウント名入力 tester.setParameterForNextRequest("form:password", "fuga");;//ログインページへパスワード入力 tester.submitForm("form");//submit、ログイン成功時はクッキーを発行して、setResponsePage(TopPage.class)でTopPageへ遷移、TopPageではクッキーを確認 tester.assertRenderedPage(TopPage.class);//ここで失敗する。クッキーが見つからないのLogOutページへ遷移してしまう 確かに自分で追った際にはわからなかったですが、デプロイしたサイトでリクエストを追うとLogIn→TopPageで一回ブラウザにRedirectが帰ってきているのでWicketTesterのそこにあたる部分でResponseからCookieを取りだしてRequestに設定してやればいけそうな気はします。 自分でも見てみます。 ご確認、宜しくお願い致します。 08/04/24 に Tsutomu Yano さんは書きました: > こんばんは。矢野です。 > > もし可能なら、いまパスしない状態のテストコードの方をここに貼ることはできないでしょうか? > 全部が無理なら、簡易コードでも結構です。 > > 完全にヤマカンですが、たぶん次ページに行くときにRequestCycleが再作成されるのでそこで > HttpRequestも変わるのでCookieがロストしているような気がしているのですが... > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From koyane @ gmail.com Fri Apr 25 12:32:00 2008 From: koyane @ gmail.com (koyane) Date: Fri, 25 Apr 2008 12:32:00 +0900 Subject: [Wicket-ja-user 81] =?iso-2022-jp?b?SFRNTBskQiVGJXMlVyVsITwlSCROQjBALSRyPXEkLTQ5GyhC?= =?iso-2022-jp?b?GyRCJCgka0p9SyEbKEI=?= Message-ID: <481150B0.7010108@gmail.com> はじめまして。日置と申します。 HTMLテンプレート内のCSSファイル設定の部分を コンテキストパスを意識したものに書き換えようとして、 以下のようなコードをかきました。動いてはいます。 WebApplication application = (WebApplication)getApplication(); final String contextPath =  application.getServletContext().getContextPath(); WebComponent cssLink = new WebComponent("cssLink"){ protected void onComponentTag(ComponentTag tag) { super.onComponentTag(tag); String cssHref = tag.getAttributes().getString("href"); tag.getAttributes().put("href", contextPath + "/" + cssHref); } }; add(cssLink); Wicketは超初心者でこんな方法しか見つけられなかったんですが、 なんかすごくめんどくさい手順を踏んでしまっているようで気になります。 HTMLテンプレート上のアトリビュートとかの取得って 普通はどうやるものなのでしょうか。 というかコンテキストパスって皆さんはどう処理してますか? From koyane @ gmail.com Fri Apr 25 12:46:01 2008 From: koyane @ gmail.com (koyane) Date: Fri, 25 Apr 2008 12:46:01 +0900 Subject: [Wicket-ja-user 82] =?iso-2022-jp?b?GyRCJDQkYSRzJEokNSQkISI8KzhKMnI3aCQ3JF4kNyQ/GyhC?= =?iso-2022-jp?b?GyRCISMbKEI=?= Message-ID: <255ad4540804242046y259c89cbn5ab8639a1f1fed6@mail.gmail.com> 日置です。 ごめんなさい、自己解決しました。 org.apache.wicket.markup.html.resources.StyleSheetReference ですね。 失礼しました。。。 -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/wicket-ja-user/attachments/20080425/e7a7c683/attachment.htm From benbrand @ mac.com Sun Apr 27 17:37:25 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Sun, 27 Apr 2008 17:37:25 +0900 Subject: [Wicket-ja-user 83] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE5lbmNvZGUkSyREJCQkRhsoQg==?= In-Reply-To: References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> <61956a250804150339g20b3d0bcve7464c1504c2ad7f@mail.gmail.com> Message-ID: 矢野です。 遅くなりましたが、WicketのJIRAにバグ報告しておきました。 一応こちらでWicketFilterを修正して、動くことを確認した上でコードも貼り付けておきました。 英語は適当です。 https://issues.apache.org/jira/browse/WICKET-1569 今後もエンコーディングがらみのバグはどんどんバク報告して虐めてやりましょうぜ(笑) 実際のところ、いろんなプロジェクトでUTF-8がらみのバグは反応が少なくて放置される傾向がある ようなので、修正コード付きでばんばん送りつけてしまいましょう :-) --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From ozaki @ yuroyoro.com Mon Apr 28 10:58:57 2008 From: ozaki @ yuroyoro.com (=?ISO-2022-JP?B?GyRCSHg6akNSP04bKEI=?=) Date: Mon, 28 Apr 2008 10:58:57 +0900 Subject: [Wicket-ja-user 84] Re: =?iso-2022-jp?b?QWpheEJ1dHRvbhskQiRHGyhCc3VibWl0GyRCJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEJGb3JtGyRCJE5lbmNvZGUkSyREJCQkRhsoQg==?= In-Reply-To: References: <8c2208bb0804140324p13920cf1uf0bf14f904cf430f@mail.gmail.com> <61956a250804142138q57d3dab9g1a27393d45df02a7@mail.gmail.com> <8c2208bb0804142354q573ffca2mb37ae1f4d8213c1d@mail.gmail.com> <61956a250804150225h1ded7307y135edea5b1e7bf89@mail.gmail.com> <8c2208bb0804150323h6e8b8126j5b6a5389e841c5e4@mail.gmail.com> <61956a250804150339g20b3d0bcve7464c1504c2ad7f@mail.gmail.com> Message-ID: <8c2208bb0804271858m311535fbqb07c9db445d91bb5@mail.gmail.com> 尾崎です。 報告ありがとうございました。 こんな時は、自分の英語力のなさがうらめしいっす。 蛇足ながら、Ajaxからのリクエストか判定する方法ですが、 Wicket内部では、 org.apache.wicket.protocol.http.WebRequest#isAjax() を利用しているようです。 中身は、HttpServletRequestからヘッダーを取り出して判定しているので 結局は同じことですが。 2008/04/27 17:37 Tsutomu Yano : > 矢野です。 > > 遅くなりましたが、WicketのJIRAにバグ報告しておきました。 > 一応こちらでWicketFilterを修正して、動くことを確認した上でコードも貼り付けておきました。 > 英語は適当です。 > > https://issues.apache.org/jira/browse/WICKET-1569 > > 今後もエンコーディングがらみのバグはどんどんバク報告して虐めてやりましょうぜ(笑) > > > 実際のところ、いろんなプロジェクトでUTF-8がらみのバグは反応が少なくて放置される傾向がある > ようなので、修正コード付きでばんばん送りつけてしまいましょう :-) > > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/wicket-ja-user/attachments/20080428/d746e5b7/attachment.htm