如何为IndexedParamUrlCodingStrategy指定空位置参数?
我安装了SearchPage
:
mount(new IndexedParamUrlCodingStrategy("search", SearchPage.class));
这允许我建立像:
这样的网址 /search/category/searchTerm/all/21-30
我可以成功检索位置参数:
String category = parameters.getString("0", "");
String searchTerm = parameters.getString("1", "");
String filter = parameters.getString("2", "all");
String pagination = parameters.getString("3", "1-10");
这允许带有空参数的URL,例如:
/search//searchTerm/all/21-30 /* no category specified */
这种方法很好,但我似乎无法创建指向缺少参数的SearchPage
的链接。
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);
这会产生与以下网址的链接:
/search/searchTerm/all/21-30
而非我的意图:
/search//searchTerm/all/21-30
答案 0 :(得分:1)
我不知道IndexedParamUrlCodingStrategy是否可以实现这一点。您可能必须切换到MixedParamUrlCodingStrategy,该{{3}}通过一组已定义的参数而不是“以0开头的升序排列的数字参数”来创建URL。 IndexedParamUrlCodingStrategy的Javadoc的这一部分让我觉得它不适合你的用例,或者你必须'发明'一些神奇的非空空字符串(它只是闻起来很糟糕)。 IndexedParamUrlCodingStrategy不会产生任何“//”(只是检查了源代码)
89 if (!url.endsWith("/"))
90 {
91 url.append("/");
92 }
显然你可以使它适合你的用例或报告为一个bug,但我不知道这不是一个功能......