Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在文本区域上设置启用后,Wicket文本输入消失_Java_Ajax_Apache_Wicket - Fatal编程技术网

Java 在文本区域上设置启用后,Wicket文本输入消失

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

我有一个TextArea和一个相关的复选框来禁用和启用TextArea(setEnabled(Boolean)),它用来决定它是否是必填字段

我的问题是Wicket在禁用(setEnabled(false))时不会将文本保留在TextArea中。它清除输入

在调用setEnabled之前,如何将该值保留在TextArea中?我需要更新服务器端的模型, 我可以做一个AJAX请求来更新它吗?我没有找到任何例子

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事件名称非常相似。看起来它们的名称相同。