0

私はフォームを持っています:

private Class TestForm extends Form<TestString>{

  public TestForm(TestString testString){
    super("testForm", new CompoundPropertyModel<TestString>(testString));
    final TextField<String> test = new TextField<String>("test"));
    add(test);
    ... //submit button
  }

TestStringクラスには、次の1つのフィールドのみが含まれますtest

送信ボタンを押す以外に文字列の値を取得することはできますか?行動か何か他のもので?

AjaxEventBehaviorメソッドtext.getValue()と呼ばれるこの動作の中に追加しようとしましtestString.getTest()たが、成功しませんでした。

4

2 に答える 2

2

なんとかしてフォームを提出する必要があります。setDefaultProcessing(false)を使用して、デフォルトのフォーム動作をfalseに設定するAjaxFormSubmitBehaviorを使用できます。そうすることで、フォームの検証をスキップし、text.getValue()を使用してテキスト値を読み取ることができます。

于 2012-08-31T18:57:38.923 に答える
0

前述のように、 AjaxFormComponentUpdatingBehaviourを使用してonchangeイベント(またはOnChangeAjaxBehaviour)を使用できますが、これはもちろん、onUpdate(AjaxRequestTargetターゲット)関数が呼び出されるたびに、ユーザーが最終的に意図した入力であるとは限らないことを意味します。例:「test」と入力すると、更新関数が4回呼び出されますが、ユーザーが送信したい最後の単語は最後の呼び出しのみです。

シナリオで言及したい重要なことの1つは、onblurイベントを単純に探すことはできないということです。これは、(あなたの例では)ユーザーがTextFieldをぼかしている可能性があるのは、送信ボタンをクリックしようとしている場合だけだからです。 、その時点で、AJAXについて心配するのは少し遅れています。なぜなら、それは提出されているからです...

おそらく、送信ボタンを押さずに文字列の値が必要な理由について詳細を提供すると、誰かがより良いアイデアを思い付くことができます(もちろん、onchangeイベントはあなたにとって問題ないかもしれませんが、その場合は素晴らしいです!)。ただし、ユーザーがフォームを送信する前に入力を検証する必要がある場合(暗闇の中でワイルドスタブを取る)、送信後に実際にこれを行うことができます。

于 2012-09-07T15:26:59.670 に答える