Wicket:点击链接后滚动到某个锚点

时间:2015-07-23 09:41:45

标签: java wicket

我已经向similar question询问了一个表单,但现在需要在用户点击某个链接后滚动到一个锚点 - 来自另一个线程的my solution不起作用。 :(

final Link link = new StatelessLink("linkId") {
  @Overrride
  public void onClick() {
    doSomething();

    add(new Behavior() {
       @Override
       public void renderHead(Component component, IHeaderResponse response) {
         super.renderHead(component, response);

         response.render(new HeaderItem() {
           @Override
           public Iterable<?> getRenderTokens() {
             return Collections.singletonList("javascript-anchor");
           }

           @Override
           public void render(Response response) {
             response.write("<script type=\"text/javascript\">\n");
             response.write("window.location.href='#rules';\n");
             response.write("</script>\n");
           }
         });
       }
     });
     setResponsePage(getClass(), getPageParameters());
  }
}

这种方法出了什么问题以及如何实现所需的滚动到锚点效果?

1 个答案:

答案 0 :(得分:0)

我使用以下非JavaScript代码:

final Link link = new StatelessLink("linkId") {
  @Overrride
  public void onClick() {
    doSomething();

    final String url = RequestCycle.get().getUrlRenderer().renderFullUrl(Url.parse(urlFor(getClass(), getPageParameters()))) + "#rules;
    setResponsePage(new RedirectPage(url));
  }
}