[Wicket-ja-user 691] Re: 独自Validatorで関連チェックをしたいでし

Back to archive index

Hiroto YAMAKAWA yamak****@photo*****
2013年 11月 23日 (土) 14:04:40 JST


ykichi0908さん、こんにちは。

私が意図をくみ取れているか不安なのですが、
単純に、金額、店舗の順でDropDownChoiceを選択した
ときにも同じValidatorを動作させたいということであれば、
この様に書き換えれば動作すると思います。

https://gist.github.com/gishi-yama/7610997

書き換えた部分は
・amountFeedBackをFeedbackPanelへ
・amountFeedBackにsetOutputMarkupId(true);
・storeにもAmountOverValidatorをadd
・storeのAjaxFormComponentUpdatingBehaviorにも
 onErrorメソッドを追加
です。


2013年11月22日 23:31  <ykich****@yahoo*****>:
> はじめて、メールをさせて貰います、
>
> 関連確認は、formvalidatorで行えますが入力内容が沢山あるので入力時点でエラー表示がしたいです(wicket6を使用しています)
>
> 店舗、金額で入力を行うとエラー表示されますが、金額、店舗で行うとエラー表示されないので困って言います
> (金額の独自Validatorを金額、店舗の順で選択してもチェックさせたい)
>
> private final Form<Void> myForm = new Form<>("InputForm");
>
> private final DropDownChoice<String> store = new
> DropDownChoice<String>("store", new Model<String>(),Arrays.asList("店舗A",
> "店舗B"));
>
> private final DropDownChoice<String> amount = new
> DropDownChoice<String>("amount", new Model<String>(),Arrays.asList("100",
> "200", "300", "400", "500"));
>
> ComponentFeedbackPanel amountFeedBack;
>
>
>
>
> this.add(myForm);
> myForm.add(store);
> // 店舗別金額Overバリデータ
> amount.add(new AmountOverValidator(amount, store));
> // 金額フィードバックパネル
> amountFeedBack = new ComponentFeedbackPanel("amountFeedBack", amount);
> myForm.add(amount);
> myForm.add(amountFeedBack);
>
>
>
>
> store.add(new AjaxFormComponentUpdatingBehavior("onchange") {
>   @Override
>   protected void onUpdate(AjaxRequestTarget target) {
>     //
>   }
> });
>
> amount.add(new AjaxFormComponentUpdatingBehavior("onchange") {
>   @Override
>   protected void onUpdate(AjaxRequestTarget target) {
>     //
>       target.add(amountFeedBack);
>   }
>   @Override
>   protected void onError(AjaxRequestTarget target, RuntimeException e) {
>       super.onError(target, e);
>       target.add(amountFeedBack);
>   }
> });
>
>
> public class AmountOverValidator extends AbstractValidator<String> {
>     private DropDownChoice<String> store;
>     private DropDownChoice<String> amount;
>
>     public  AmountOverValidator( DropDownChoice<String>
> amount,DropDownChoice<String> store){
>         this.store = store;
>         this.amount = amount;
>     }
>
>     @Override
>     protected void onValidate(IValidatable<String> validatable) {
>         // 入力値を取得
>         String strStore = this.store.getConvertedInput();
>         String strAmount = this.amount.getConvertedInput();
>
>         if (strStore == null) {  strStore = store.getModelObject(); }
>         if (strAmount == null) { strAmount = amount.getModelObject(); }
>
>         if ((StringUtils.isEmpty(strStore)) ||
> (StringUtils.isEmpty(strAmount))) {
>         } else {
>                   //店舗別の金額確認処理
>                   //エラー時のとき
>                   error(validatable, "AmountOverValidator");
>             }
>         }
> }


山川広人 yamak****@photo*****
千歳科学技術大学 総合光科学部 助教




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