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仅包含一个字段:test.

除了按下提交按钮之外,是否可以获取字符串的值?是行为还是其他?

我试图AjaxEventBehavior在这种行为内部添加和调用方法text.getValue()testString.getTest()但没有成功。

4

2 回答 2

2

您必须以某种方式提交表格。您可以使用 AjaxFormSubmitBehavior 通过 setDefaultProcessing(false) 将默认表单行为设置为 false。这样做会跳过表单验证,并且可以使用 text.getValue() 读取文本值。

于 2012-08-31T18:57:38.923 回答
0

如前所述,您可以使用AjaxFormComponentUpdatingBehaviour并使用onchange事件(或OnChangeAjaxBehaviour),这当然意味着任何时候调用您的onUpdate(AjaxRequestTarget target)函数不一定是用户最终预期的输入。例如:假设您输入“test”,您的更新函数将被调用 4 次,但只有最终调用是用户希望提交的最终单词。

我想为您的场景提到的一件重要事情是,您不能简单地查找onblur事件,因为(在您的示例中)用户可能会模糊TextField的唯一时间是他们试图单击提交按钮,此时担心AJAX有点晚了,因为它正在提交......

也许如果你提供更多关于为什么你需要字符串的值而不按下提交按钮的细节,那么有人可以想出一个更好的主意(当然它可能是 onchange 事件对你来说很好,在这种情况下很好!)。但是,如果(在黑暗中猛烈抨击)您需要它在用户提交表单之前验证输入,那么您实际上可以在提交后执行此操作:

于 2012-09-07T15:26:59.670 回答