Java 在文本区域上设置启用后,Wicket文本输入消失
我有一个TextArea和一个相关的复选框来禁用和启用TextArea(setEnabled(Boolean)),它用来决定它是否是必填字段 我的问题是Wicket在禁用(setEnabled(false))时不会将文本保留在TextArea中。它清除输入 在调用setEnabled之前,如何将该值保留在TextArea中?我需要更新服务器端的模型, 我可以做一个AJAX请求来更新它吗?我没有找到任何例子Java 在文本区域上设置启用后,Wicket文本输入消失,java,ajax,apache,wicket,Java,Ajax,Apache,Wicket,我有一个TextArea和一个相关的复选框来禁用和启用TextArea(setEnabled(Boolean)),它用来决定它是否是必填字段 我的问题是Wicket在禁用(setEnabled(false))时不会将文本保留在TextArea中。它清除输入 在调用setEnabled之前,如何将该值保留在TextArea中?我需要更新服务器端的模型, 我可以做一个AJAX请求来更新它吗?我没有找到任何例子 checkBox.add(new AjaxFormComponentUpdatingBeh
checkBox.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
if (textField.isEnabled()) {
textField.inputChanged();
// Update text input in PropertyModel….
}
textField.setEnabled(false); // This change in state does not include text that have been typed in
tekstFelt.setRequired(false);
target.add(textField);
}
});
您必须为
blur
事件向TextArea
添加ajaxFormComponentUpdateingBehavior
,以便当您在TextArea中键入并离开TextArea(lose focus=blur)时,您键入的内容将由模型保留。示例代码:
private TextArea textarea() {
TextArea textarea = new TextArea("textarea", new PropertyModel<String>(this, "value")){
@Override
protected void onConfigure() {
setEnabled(condition());
}
};
textarea.setOutputMarkupId(true);
textarea.add(new AjaxFormComponentUpdatingBehavior("blur") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
}
});
return textarea;
}
private TextArea TextArea(){
TextArea TextArea=newtextarea(“TextArea”,新属性模型(此“值”)){
@凌驾
配置()上受保护的空{
setEnabled(条件());
}
};
setOutputMarkupId(true);
添加(新的AjaxFormComponentUpdateingBehavior(“模糊”){
@凌驾
受保护的void onUpdate(AjaxRequestTarget目标){
}
});
返回文本区;
}
我还建议您在文本区域的
onConfigure()
中设置文本区域是否启用。当您想要更新textarea时,只需将其添加到AjaxRequestTarget
中,textarea就会知道是否应该启用它。这是一个最佳实践,与您的问题没有直接关系。wow!多好的回答:)很有魅力。我对“模糊”事件一无所知。是否有所有事件/行为类型的完整列表?听起来与JavaScript事件名称非常相似。看起来它们的名称相同。