私はウィケットを持っていAutoCompleteTextField
ます。モデルを更新するには、「onblur」イベントを使用します。また、検証が必要なため、「onblur」イベントが発生した後にテキスト フィールドを更新する必要があります。
問題を説明するためのコードサンプルを次に示します
WebPage サブクラス:
public class TestPage extends WebPage {
private Integer testField;
public TestPage() {
final List<Integer> allowedValues = new ArrayList<Integer>();
for (int i = 0; i < 5; i++) {
allowedValues.add(50 + i * 5);
}
final PropertyModel<Integer> testModel = new PropertyModel<Integer>(this, "testField");
final AutoCompleteSettings autoCompleteSettings = new AutoCompleteSettings();
autoCompleteSettings.setShowListOnEmptyInput(true);
autoCompleteSettings.setShowListOnFocusGain(true);
final AutoCompleteTextField<Integer> testInput =
new AutoCompleteTextField<Integer>("testInput", testModel, autoCompleteSettings) {
@Override
protected Iterator<Integer> getChoices(final String input) {
return allowedValues.iterator();
}
};
testInput.setOutputMarkupId(true);
testInput.setMarkupId("testInput");
add(testInput);
testInput.add(new AjaxFormComponentUpdatingBehavior("onblur") {
@Override
protected void onUpdate(final AjaxRequestTarget target) {
target.add(testInput);
}
});
}
}
対応する HTML:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" xml:lang="en"
lang="en">
<body>
<input type="text" wicket:id="testInput"/>
</body>
</html>
問題は、マウス クリックで値を選択できないことです。
私は使用してみましたOnChangeAjaxBehavior
-マウスクリックによる選択は機能しますが、すべての変更後に検証を実行したくありません(たとえば、ユーザーが54を入力したい場合、彼は5を入力します=>が起動されるため、検証が開始されますOnChangeAjaxBehavior
)
AjaxFormComponentUpdatingBehavior("onblur")
と の両方を組み合わせて使用してみまし OnChangeAjaxBehavior
たが、同じ問題がありました。「onchange」の前に「onblur」が起動されるため、マウスクリックで値を選択できません
target.add(testInput);
行をコメントすると、期待どおりに動作することに注意してください。
このWicketの問題に似ているようです
この問題は 6.18.0 バージョンで修正されたと書かれていますが、私は正確に Wicket 6.18.0 を使用していますが、まだこの問題が発生しています。
Wicket 1.4 から wicket 6 へのアップグレードを行っています。Wicket 1.4 では問題なく動作しました。
この問題を解決する方法についてアドバイスをお願いします。あなたの助けは本当に感謝されます. 前もって感謝します。