maeda
aaake****@gmail*****
2008年 4月 1日 (火) 20:55:25 JST
maedaです。 u1さま返信ありがとうございました。 onErrorに処理を追加して無事に自分の思っていたとおりに実装することが出来ました!! 動作確認までしていただき本用にありがとうございます。 "yuichi tanaka" <u1tnk****@gmail*****> 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<aaake****@gmail*****> さんは書きました: > > おはようございます、maedaです。 > > > > u1さま返信ありがとうございました。 > > > > 実装したかったことは > > 1.onblur時に999999形式で入力した数値を999/999と分数表記に変換する。(AjaxFormComponentUpdatingBehavior) > > 2.ボタン押下時に999/999形式かチェックを行う。(PatternValidator) > > > > 実際は999999形式で入力しonblur時にチェックが行われエラーで変換が行われずに > > 今回は更にエラーが表示されるFeedbackPanelがadd、setOutputMarkupIdされておらず > > エラーが表示できていないということでしょうか? > > > > > > > > > > > > "yuichi tanaka" <u1tnk****@gmail*****> wrote: > > > > > u1です。 > > > > > > 私もハマったことありますが、正常にValidationにひっかかってるんだけど、AjaxRequestTarget > > > にFeedBackPanelをaddしていない為、エラーメッセージを表示できていないだけだと思います。 > > > > > > これもよくやりましたが、setOutputMarkupId(true)を忘れずに! > > > > > > > > > > > > > > > 08/03/31 に maeda<aaake****@gmail*****> さんは書きました: > > > > 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 > > > > Wicke****@lists***** > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicke****@lists***** > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicke****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user