从wicket 6调用javascript函数,Link的“onclick()”

时间:2013-07-05 17:43:35

标签: java ajax wicket wicket-6

我有以下java和html代码:

this.leakageModel = new PropertyListView<Leakage> ( "leakage", new ArrayList<Leakage> ()) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem (final ListItem<Leakage> item) {

            Link<String> brandLink = new Link<String> ("brandLink") {
                private static final long serialVersionUID = -480222850475280108L;

                @Override
                public void onClick () {
                    //change another model in the page to update 
                    //another table when the link is clicked
                }

            };

            brandLink.add (new Label ("brand"));
            item.add (brandLink);

        } };

    add (this.leakageModel);

html文件:

                        <tr wicket:id="leakage" class="testClass">
                            <td class="testClass">
                                <a wicket:id="brandLink" href="#">
                                    <span wicket:id="brand"></span>
                                </a>
                            </td>   

                        </tr>

我想要做的是能够从onClick()方法中调用javascript函数。

我目前在onClick方法中进行的模型更新效果很好,并且更新了页面上的另一个表。

但是我尝试调用javascript函数或更改css样式的所有内容都失败了。

例如:

添加css类:

add(new AttributeAppender(“class”,new Model(“anotherclass”),“”));

使用AjaxLink类型,以及其他一些我试图无用的东西。

在相关的说明中,我的初衷是隐藏表中除了单击的行之外的所有行。也许我只能从Java代码执行此操作,根本不需要Javascript,但是如上所述更新css不起作用。

关于我做错了什么的任何建议?

1 个答案:

答案 0 :(得分:3)

  

在相关的说明中,我的初衷是隐藏所有行   除了我点击过的那张桌子。

我会尝试为您的问题提供解决方案,而不是回答您的问题。)。

通过javascript隐藏表格行非常有意义。我建议按照Hiding all but first table row with jQuery

中的描述使用Jquery
$("#myTbl tr:not(nth-child(3))").hide();

现在,每次用户点击您的Wicket链接时,您都必须执行上述javascript代码段。为此,您可以创建自己的链接类,如下所示:

public class JavascriptLink extends Label{

  public JavascriptLink(String id, String label) {
    super(id, label);
    add(new AttributeAppender("onclick", "...your javascript here..."));
  }
}

我留给您将jquery与JavascriptLink结合使用以满足您的要求。它应该朝着这个方向发展。