Wicket - 单击上下文菜单时,顶级菜单冻结

时间:2017-11-27 19:50:35

标签: wicket wicket-1.5

我的应用程序具有显示特定报告详细信息的页面的顶级菜单和上下文菜单。点击此上下文菜单图标,我将获得一个上下文菜单,其中包含enter image description here

所示的某些操作

现在,问题是每当我单击此上下文菜单并且什么也不做(没有从该上下文菜单中选择任何操作)时,顶级菜单就会被冻结。我需要刷新页面才能使其正常工作。我使用下面的wicket代码来处理上下文菜单上的操作 -

单击上下文菜单,操作将为null,单击删除编辑复制,操作将转到else循环。如果它进入其他循环,我很好,因为页面将导航到另一个顶级菜单工作。如果操作为null,则调用 scheduleRequestHandlerAfterCurrent ,我将面临冻结顶级菜单的问题。

@Override
    public void onRequest()
    {
        final Component component = getComponent();
        final IRequestCycle cycle = component.getRequestCycle();
        final IRequestParameters parameters = cycle.getRequest().getRequestParameters();
        final String action = parameters.getParameterValue("action").toString(null);
        if (null == action)
        {
            cycle.scheduleRequestHandlerAfterCurrent(new TextRequestHandler("application/json", "UTF-8",
                    buildResponse()));
        } else
        {
            final String target = parameters.getParameterValue("targetId").toString(null);
            if (null == target)
            {
                throw new RuntimeException(
                        String.format("Did not receive a target object identifier for action [%s].", action));
            }
            menu.getAdapter().performActionOnTarget(component, action, target);
        }
    }

1 个答案:

答案 0 :(得分:0)

在显示上下文菜单之前,自定义JS中有一条$(document).unbind('click');行。此上下文菜单之前设计为鼠标右键单击显示。在新的实现中,它被更改为在鼠标单击时显示。删除那个unbind语句修复了我的问题..