George Armhold
George Armhold

Reputation: 31074

Wicket IndexedParamUrlCodingStrategy: how to specify missing parameters?

How can I specify empty positional params for IndexedParamUrlCodingStrategy?

I have a SearchPage mounted with:

    mount(new IndexedParamUrlCodingStrategy("search", SearchPage.class));

This allows me to build urls like:

   /search/category/searchTerm/all/21-30

I can successfully retrieve the positional params with:

    String category = parameters.getString("0", "");
    String searchTerm = parameters.getString("1", "");
    String filter = parameters.getString("2", "all");
    String pagination = parameters.getString("3", "1-10");

This allows for URLs with empty params, such as:

  /search//searchTerm/all/21-30   /* no category specified */

This works fine, but I can't seem to create links to the SearchPage with missing params.

  params.put("0", ""); // try to set "empty" category
  params.put("1", "searchTerm");
  params.put("2", "all");
  params.put("3", "21-30");
  BookmarkablePageLink<SearchPage> link = new BookmarkablePageLink<SearchPage>("link", SearchPage.class, linkParams);

This results in a link with URLs like:

  /search/searchTerm/all/21-30

rather than my intended:

  /search//searchTerm/all/21-30

Upvotes: 0

Views: 384

Answers (1)

Nicktar
Nicktar

Reputation: 5575

I don't know if this is possible with an IndexedParamUrlCodingStrategy. You might have to switch to an MixedParamUrlCodingStrategy that creates the URL by a defined set of parameters instead of "numeric parameters in ascending order starting with 0". This part of the Javadoc of the IndexedParamUrlCodingStrategy makes me think that either it's not suited for your usecase or you have to 'invent' some magic non-empty-empty String (which just smells real bad). The IndexedParamUrlCodingStrategy wouldn't produce any "//" (just checked the sources)

89    if (!url.endsWith("/"))
90    {
91        url.append("/");
92    }

Obviously you could make it to fit your usecase or report that as a bug, but I don't know if this isn't a feature...

Upvotes: 1

Related Questions