java - 如何在 onClick() 中禁用/更改 wicket 按钮链接的样式

标签 java wicket

在 Wicket 应用程序中,我有一堆 <button>我要攻击的元素 Link成分。现在在 onClick()我想禁用或更改按钮样式的组件的方法。我怎样才能做到这一点?打电话setEnabled(false)没有影响。

最佳答案

重复使用 onClick() 是对内存中的同一个对象进行操作。如果您不使用 Ajax,您仍然可以在 Link 的匿名子类中维护一些状态。然后,您可以使用 onBeforeRender() 和 onComponentTag() 来更改每次显示的方式。

Link<Void> link = new Link<Void>("myLink") {

    private String customCSS = null;
    private boolean customEnabled = true;

    public void onClick() {
        if (/* test to determine disabled */) {
            customCSS = "disabled";
            customEnabled = false;
        } else {
            customCSS = null;
            customEnabled = true;
        }
    }

    @Override
    protected void onComponentTag(ComponentTag tag) {
        super.onComponentTag(tag);
        if (customCSS != null)
            tag.put("class", customCSS);
    }

    @Override
    public boolean isEnabled() {
        return super.isEnabled() && customEnabled;
    }
};

AttributeModifiers(或其他行为)不适合这种情况,因为如果您将它们添加到 onClick() 方法中,它们将在每次点击时开始堆叠在同一个链接上 - 因为它们作为链接的一部分进行维护状态。

您的链接可以跟踪各种状态,允许您的 onClick() 方法通过重复点击启用/禁用/更改/等。

您还可以重写 onBeforeRender()、isVisible() 以及每次在页面上显示链接时运行的其他方法。无论您点击按钮多少次,构造函数、onConfigure() 和其他构造函数都只运行一次。

关于java - 如何在 onClick() 中禁用/更改 wicket 按钮链接的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921357/

相关文章:

java - 如何制作六角形 JButton

java - 如何为 Jasper 报告下载设置名称?

java - 在 Java 小程序中加载图像 AccessControlError

java - 对 wicket 框架进行负载测试的最佳工具?

java - 如何使用 wicket ajax 请求处理 session 超时?

java - 线程 "main"中出现异常

java - 从 Wicket 调用 Javascript 函数

javascript - 如何选择 Wicket Palete 中的所有可用选项?

Java Wicket 资源问题

java.sql.SQLException : Wrong number of parameters error