1

特定の組み合わせで入力が必要なフォームがあり、クリックされた送信ボタンによっても異なります。

たとえば、フィールド A、B、および C、および送信ボタン M、N。有効な組み合わせは、M: A + B N: A + B + C N: A N: C です。

したがって、常に必要な入力はありません。

現在、私は if( ... ) in を使用して解決していonSubmit()ますが、特定の組み合わせを承認 (拒否) するコールバックを使用して、これらのチェックをコンポーネントごとのバリデーターに移動できますか?

アップデート:

_______________________

  User name:  ______
  Password:   ______

  [ Log in button ]

  Email:      ______

  [ Register / reset password button ]
_______________________

ログインにはユーザー名とパスワードが必要です。登録する場合はすべてを必要とし、登録する場合はメールのみ、ユーザー名のみを登録する場合はパス リセット チャレンジ メールを送信します。

4

3 に答える 3

1

I'd suggest you add AjaxFormComponentUpdatingBehaviors to your components and then disable all components which shouldn't be available in the current combination via

formComponent.setEnabled(false);
target.add(formComponent);

Disabled components will not be considered in validation. An additional benefit is, that the user always has feedback on allowed combinations immediately.

于 2013-03-05T08:50:04.837 に答える
0

フォームが次のようになっていると仮定します。

TextField user = new TextField();
user.setRequired(true);
TextField pass = new TextField();
TextField email = new TextField();
Button login = new Button();
Button register = new Button();

次のように FormValidator クラスを作成してみます。

public class MyValidator extends AbstractFormValidator
{
   private FormComponent[3] fields;

   public MyValidtor(TextField field1, TextField, field2, Button button)
   {
      fields = {field1, field2, button };
   }

   //getDependentFormComponents returns fields;

   public void validate(Form form)
   {
      if ( form.getRootForm().findSubmittingButton() == button)
      {
         //do field1 & field2 required checks here
      } 
   }
}

MyValidator次に、フォーム に追加するだけです

form.add(new MyValidator(user, pass,  login));
form.add(new MyValidator(user, email, register));
于 2013-03-07T00:24:28.923 に答える