Is it OK (ie "by design" as opposed to "by mistake") that the urls generated for the mounted pages end up with the "/"?

Provided that there's a page that expects single parameter (here: "content")...
public class HelpPage extends WebPage {
public HelpPage(PageParameters p) {
super(p);
add(new DynamicContentPanel("contentPanel", new Model<String>(p.getString("content"))));
}
}

...and it is mounted in the Application#init()
mount(new BookmarkablePageRequestTargetUrlCodingStrategy("help", HelpPage.class, null));

...and further referred to somewhere else as:
add(new BookmarkablePageLink("helpPage", HelpPage.class, new PageParameters("content=a")));

the url in the generated markup is in the following form:
http://localhost:8080/dummy-web/help/content/a/;jsessionid=11624C6125F8DF4867E3218676D79A29

While IMHO it should read:
http://localhost:8080/dummy-web/help/content/a;jsessionid=11624C6125F8DF4867E3218676D79A29

The page parameter for both cases is resolved correctly by the HelpPage's constructor, so it seems that even though there's an extra "/" at the end of the url it gets omitted.
Then why bother generating it?

I looked up in the sources and found that it is the AbstractRequestTargetUrlCodingStrategy#appendValue(AppendingStringBuffer url, String key, String value) that is responsible for adding an extra trailing "/" at the end of the generated url It is invoked in the loop, and possibly there's no corner case implemented for the last parameter to be encoded.

/regz,
Dominik Drzewiecki

Reply via email to