我有一个简单的FormPage派生自WebPage定义如下:
public FormPage() {
final FeedbackPanel feedback = new FeedbackPanel("feedback");
add(feedback);
final TextField<String> entry = new TextField<String>("entry");
final Button button = new Button("button");
button.add(new AjaxEventBehavior("onclick") {
@Override
protected void onEvent(final AjaxRequestTarget target) {
System.out.println("Event");
}
});
Form<DataModel> form = new Form<User>("userForm", new CompoundPropertyModel<DataModel>(dataModel)) {
@Override
protected void onValidate() {
System.out.println("Validate");
String entryValue = entry.getValue();
if (entryValue == null || entryValue.length() == 0) {
error("entry value required");
}
};
@Override
protected void onSubmit() {
System.out.println("Submit");
if (!hasErrors()) {
String entryValue = entry.getValue();
if (!entryValue.equals("value")) {
error("entry has wrong value");
}
}
};
};
form.add(entry);
form.add(button);
add(form);
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试在表单提交上做一些事情(在这个例子中只是打印到控制台),所以我附加AjaxEventBehavior了按钮的onclick事件.这非常有效:按钮单击时会执行操作,但现在表单尚未提交.
我也在试验
form.add(new AjaxEventBehavior("onsubmit")
Run Code Online (Sandbox Code Playgroud)
并且此事件处理程序还会阻止表单提交.例如,
entry.add(new AjaxEventBehavior("onclick")
Run Code Online (Sandbox Code Playgroud)
允许提交表单,但该事件与提交无关.现在我很困惑如何提交表单并对此事件执行一些操作.
Tho*_*mas 11
默认情况下,在Wicket 6中,附加到组件的行为会阻止发生默认组件操作.
如果要同时触发行为和组件操作,则必须覆盖行为中的updateAjaxRequestAttributes方法:
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.setAllowDefault(true);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12094 次 |
| 最近记录: |