我有一张表格:
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()
,但没有成功。
答案 0 :(得分:2)
您必须以某种方式提交表单。您可以使用AjaxFormSubmitBehavior将默认表单行为设置为false,并使用setDefaultProcessing(false)。 这样做可以跳过表单验证,并且可以使用text.getValue()读取文本值。
答案 1 :(得分:0)
如前所述,您可以使用 AjaxFormComponentUpdatingBehaviour 并使用 onchange 事件(或 OnChangeAjaxBehaviour ),这当然意味着您的任何时候 onUpdate(AjaxRequestTarget目标)函数被调用不一定是用户最终的预期输入。例如:假设您输入'test',您的更新函数将被调用4次,但只有最终调用才是用户希望提交的最后一个字。
我想为你的场景提一件重要的事情是,你不能简单地寻找一个 onblur 事件,因为(在你的例子中)用户可能只是模糊了 TextField ,如果他们试图点击提交按钮,那么担心AJAX会有点迟到,因为它正在提交...
也许如果您在不按下提交按钮的情况下提供有关字符串值的原因的更多详细信息,那么有人可以提出更好的想法(当然可能是onchange事件对您来说很合适,在哪个案子很棒!)。然而,如果(在黑暗中采取疯狂的刺)你需要它在用户提交表单之前验证输入,那么你可以在提交后实际执行此操作: