当getPrecondition返回false时,Wicket 6.18 AjaxEventBehavior(“onkeypress”)

时间:2015-05-26 21:57:29

标签: java javascript jquery ajax wicket-6

我正在尝试将AjaxEventBehavior(“onkeypress”)添加到TextField,我正在这样做

TextField<String> input = new TextField<String>("input");
    input.setOutputMarkupId(true);
    input.add(new AjaxEventBehavior("onkeypress") {

        @Override
        protected void onEvent(AjaxRequestTarget target) {
            Panel.this.info("hello!");
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);

            attributes.getAjaxCallListeners().add(new AjaxCallListener(){
                public CharSequence getPrecondition(Component component) {
                    return "if (Wicket.Event.keyCode(attrs.event)  == 13) " +
                            " { return true; } " +
                            "else { return false; }";
                }
            });
        }
    });

当我在输入中按Enter键(keyCode == 13)时,我的反馈面板显示为你好!但当我按下另一个键时,Wicket Ajax Debug没有发生任何事情:“Ajax请求因前置条件检查而停止”我的ajaxIndicator启动并且永不停止。

我有一个带有这个

的application.js
Wicket.Event.subscribe('/ajax/call/before',showBusysign);
Wicket.Event.subscribe('/ajax/call/success',hideBusysign);
Wicket.Event.subscribe('/ajax/call/failure',hideBusysign);
}

function hideBusysign() {
    document.getElementById('busyIndicator').style.display = 'none';
    hideMask();
}

function showBusysign() {
    document.getElementById('busyIndicator').src = 'img/busy.gif'
    document.getElementById('busyIndicator').style.display = 'inline';
} 

hideBusysign永远不会打电话,我试试这个但不起作用!

@Override
                public CharSequence getFailureHandler(Component component) {
                    return "document.getElementById('busyIndicator').style.display = 'none'; " +
" hideMask();";

这是实现EnterKeypressEvent的正确方法吗?

谢谢,最好的问候。

1 个答案:

答案 0 :(得分:0)

您应该使用'/ajax/call/beforeSend代替'/ajax/call/before。 只有在所有先决条件都通过时才会执行beforeSend