0

I've asked a similar question for a form, but now need to scroll to an anchor after the user clicked a certain link - my solution from the other thread does not work. :(

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());
  }
}

What's wrong with this approach and how to achieve the desired scrolling-to-anchor effect?

Community
  • 1
  • 1
Thomas S.
  • 5,804
  • 5
  • 37
  • 72

1 Answers1

0

I'm using following non-JavaScript code instead:

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));
  }
}
Thomas S.
  • 5,804
  • 5
  • 37
  • 72