在 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/