如何在Apache Wicket中按下时禁用按钮

时间:2018-01-02 13:42:20

标签: java apache wicket

我需要在按下时禁用此按钮。我知道一些硬编码方法,但我想使用一些默认的Apache Wicket函数动态禁用。

form.add(new Button("Continue") {
    private static final long serialVersionUID = 1L;

    @Override
    public void onSubmit() {
    process();
    };
});

2 个答案:

答案 0 :(得分:0)

由于这是非Ajax按钮(即将导致重新加载页面的按钮),您可以执行以下操作:

<button wicket:id="Continue" onclick="this.disabled='disabled'; return true">...</button>

即。 onclick JS事件监听器将禁用该按钮并让它执行默认行为,即提交表单。

请注意,禁用的表单元素不会随提交的数据一起发送!即无法知道在服务器端单击了哪个按钮。解决方法是在setTimeout()中禁用它。

如果您使用某个JS库进行客户端表单验证,那么最好在其回调中执行此逻辑,因为如果值无效,您可能希望重新启用该按钮。

答案 1 :(得分:0)

为什么你不使用Wicket Ajax Button?

我认为你可以为按钮创建一个ajaxUpdate:

  Button b = new Button("Continue") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
        process();
        };
    };
        b.add(new AjaxFormComponentUpdatingBehavior("onclick") {
           protected void onUpdate(AjaxRequestTarget target) {
              b.setEnabled(false);
           });
    form.add(b);