maeda
aaake****@gmail*****
2008年 3月 31日 (月) 18:11:28 JST
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のログでは呼出される時もダメな時も同じログが流れていました。