Java Wicket 6.13链接onclick行为不适用于ajax onclick行选择

Java Wicket 6.13链接onclick行为不适用于ajax onclick行选择,java,ajax,wicket,wicket-1.6,wicket-6,Java,Ajax,Wicket,Wicket 1.6,Wicket 6,我最近已从Wicket 1.5.11升级到Wicket 6.13 升级后,我面临一个链接onclick行为的问题 我们有一个可点击的行,其中包含几个列(其中一个是指向新页面的链接)。 现在,如果我们点击链接,我们将进入新页面,点击该行(除了链接),该行将被选中(使用Ajax调用) Wicket 1.5.11运行良好,我面临Wicket 6.13的问题 链接类别: public class MyLink extends Link { private static final long seria

我最近已从Wicket 1.5.11升级到Wicket 6.13 升级后,我面临一个链接onclick行为的问题

我们有一个可点击的行,其中包含几个列(其中一个是指向新页面的链接)。 现在,如果我们点击链接,我们将进入新页面,点击该行(除了链接),该行将被选中(使用Ajax调用)

Wicket 1.5.11运行良好,我面临Wicket 6.13的问题

链接类别:

public class MyLink extends Link {

private static final long serialVersionUID = 5808539933400105591L;
private MyRow myRow;

public MyLink(String id, MyRow myRow) {
    super(id);
    this.myRow = myRow;
}

/** {@inheritDoc} */
@Override
public void onClick() {
    //sets the response page where this needs to be redirected.
    this.setResponsePage(new ResponseReadPage(this.myRow));
}
}
填充方法:

@Override
protected void populateItem(final ListItem item) {
    final MyRow myRow = (MyRow) item.getModelObject();
    item.add(new Label("naam", myRow.getName()));
    item.add(new Label("id", myRow.getCode()));

    MyLink myLink = new MyLink("myLink", myRow);
    item.add(myLink);
    final MyRow selectedRow = this.session.getSelectedRow();

    if (selectedRow != null
            && selectedRow.equals(myRow)) {
        this.session.selectedRow(myRow);
        item.add(new AttributeModifier("class", "activeRow"));
        this.selecteditem = item;

        //some business logic
    }

    item.add(new AjaxEventBehavior("onclick") {
        /** {@inheritDoc} */
        @SuppressWarnings({ "unchecked", "rawtypes" })
        @Override
        protected void onEvent(final AjaxRequestTarget target) {
            final WebMarkupContainer container = (WebMarkupContainer) MyListView.this.getParent()
                    .getParent().get("myContainer");

            MyListView.this.session.setSelectedRow(myRow);

            if (MyListView.this.currentActiveItem != null) {
                MyListView.this.previousActiveItem = MyListView.this.currentActiveItem;
                MyListView.this.previousActiveItem.add(new AttributeModifier("class", ""));
            }
            item.add(new AttributeModifier("class", "activeRow"));
            MyListView.this.currentActiveItem = item;
            if (MyListView.this.previousActiveItem != null) {
                target.add(MyListView.this.previousActiveItem);
            }

            if (MyListView.this.selecteditem != null
                    && !MyView.this.selecteditem.equals(item)) {
                MyListView.this.selecteditem.add(new AttributeModifier("class", ""));
                target.add(MyListView.this.selecteditem);
            }
            target.add(item);
            target.add(container);
        }
    });
}
当我尝试单击链接而不是链接的onClick方法时,将调用行的AjaxBehavior的onClick事件。 有人能给我指出正确的方向来解决这个问题吗


更新:当我右键单击链接并在另一个选项卡中打开它时,对链接的onClick方法的调用按预期成功进行。

我找到了解决方案。 在代码中添加了以下行:

myLink.add(new AttributeAppender(
"onclick", new Model("if(event.stopPropagation) { "+
                "event.stopPropagation();"+
                    "} else { "+"event.cancelBubble = true;"
                     +"}"), ";"));

链接onclick事件正在传播到该行的onclick事件,因此它的行为是这样的。

我刚刚遇到了同样的问题。由于我的应用程序不支持9以下的IE版本(请参阅),因此我保持了AttributeAppender的简单性:

public class EventStopPropagationAttributeAppender extends AttributeAppender {

  public EventStopPropagationAttributeAppender() {
    super("onclick", new Model<String>("event.stopPropagation();"), ";");
  }
}
公共类EventStopPropagationAttributeAppender扩展了AttributeAppender{
public EventStopPropagationAttributeAppender(){
超级(“onclick”,新模型(“event.stopPropagation();”),“;”;
}
}

我有同样的症状:从Wicket 1.4直接迁移到Wicket 7.9后,Ajax行为不起作用

在我的例子中,原因是:jquery javascript源无法加载。他们被禁止服侍

我的应用程序使用类AuthStrategy,它有一个方法:

@Override
public boolean isResourceAuthorized(IResource arg0, PageParameters arg1) {
    return false;
}
因此,无法加载jquery js源代码。将返回值更改为True解决了问题


似乎通过该方法传递的唯一资源是那些jquery Java脚本。

为什么是6.13而不是最新的6.18?@martin-g客户需求:/