[英]Apache Wicket: textarea lose content after hide/show
我有帶復選框和textarea的檢票口形式。 復選框值更改時,我需要隱藏和顯示textarea。
這是我的實現:
private class EditCommentForm extends Form {
private TextArea applyToAllArea;
private boolean addToAll;
// some code here
public EditCommentForm(String id) {
super(id);
applyToAllArea = new TextArea<>("applyToAllArea", Model.of(""));
applyToAllArea.setVisible(addToAll);
applyToAllArea.setOutputMarkupId(true);
applyToAllArea.setOutputMarkupPlaceholderTag(true);
add(applyToAllArea);
CheckBox addToAllCheckbox = new AjaxCheckBox("addToAll", new PropertyModel<>(this, "addToAll")) {
@Override
protected void onUpdate(AjaxRequestTarget target) {
applyToAllArea.setVisible(addToAll);
target.addComponent(applyToAllArea);
}
};
addToAllCheckbox.setVisible(documents.size() > 1);
add(addToAllCheckbox);
// some code here
}
private boolean isAddToAll() {
return addToAll;
}
}
當我在textarea中鍵入一些信息,然后兩次單擊復選框(隱藏並顯示textarea)時,我鍵入的信息丟失。
那么,如何在不提交表單的情況下保存鍵入的信息?
Wicket版本1.4.20
正如@bert解釋的那樣,問題在於文本區域的內容無論如何都不會保存,並且在重新繪制后,Wicket在服務器端使用了空的當前模型。
一個簡單的解決方案是將new AjaxFormComponentUpdatingBehavior("onblur")
到文本區域,以便在用戶移動到頁面中的另一個元素時保存其內容。
我建議您至少升級到1.4.22。 與1.4.20相比,它幾乎沒有與安全相關的修復程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.