java - 在 TextArea 上 setEnable 后,Wicket 文本输入消失

标签 java ajax apache wicket

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

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

在调用 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 事件的 AjaxFormComponentUpdatingBehavior 添加到 TextArea 中,以便在您输入文本区域并离开文本区域时(丢失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;
}

我还建议无论文本区域是否启用,您都应该在文本区域的 onConfigure() 中设置。当您想要更新文本区域时,只需将其添加到 AjaxRequestTarget 中,文本区域就会知道是否应该启用它。这是最佳实践,与您的问题没有直接关系。

关于java - 在 TextArea 上 setEnable 后,Wicket 文本输入消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25750089/

相关文章:

java - 如何使用 Java 在浏览器上显示图像?

javascript - Ajax 错误: Failed to load resource: the server responded with a status of 500 (Internal Server Error)

带有 #id 的 jQuery load() 不适用于 TEXTAREA

php - 通过服务器启动回合制手机游戏,然后手机与手机之间直接通信(无需服务器)

php - 在 CGI 网站的 HTML 中使用 PHP 进行网站身份验证?备择方案?

java - 为什么我会遇到唯一索引或主键违规?

java - 无法在 Eclipse 中调试简单的 Java 应用程序。无法连接到虚拟机。 AGENT_ERROR_TRANSPORT_INIT(197)

java - Android:Firebase 数字增量

javascript - laravel 中下拉菜单发生变化时显示数据

javascript - 设置Access-Control-Allow-Origin可能存在的安全问题