ServerHandler を送信ボタンに関連付けて、送信前にフォームの検証を行うことができるようにします。検証が成功すると、フォームの POST が実行されます。検証が (フィールドが不完全または正しくないために) 失敗した場合、POST は停止し、ServerHandler は正しくないフィールドを示すことができます。JavaScript で event.preventDefault() を使用して行うこと、または送信のボタン ハンドラーで false を返すことの種類。
var app = UIApp.getActiveApplication();
var form = app.createFormPanel();
var panel = app.createVerticalPanel();
// Add form elements to panel such as textboxes, radio buttons, list boxes etc.
...
...
var button = app.createSubmitButton("submit");
button.addClickHandler(app.createServerHandler("validate").addCallbackElement(panel));
panel.add(button);
form.add(panel);
app.add(form);
function validate(e) {
// Do the validation of the form
// QUESTION - How do we then disable or allow the POST?
}
したがって、私が現在行っているのは、検証ボタン (通常のボタン) を用意することです。これは、サーバー ハンドラーで行われたフォームの検証が適切な場合、「送信」ボタンに変更されます。その後、ユーザーはボタンをもう一度クリックしてフォームを送信する必要があります。検証が成功したら、すべての要素をロックして、フィールドが変更されないようにする必要があります。上記のJavascriptルートに似た、より良い方法が必要であり、ここで参照されています: event.preventDefault() vs. return false
参考までに、検証 ServerHandler を送信ボタンに関連付けると、常に POST が実行されます。