Bookmarkableなリンクのパラメータに「/」が入る場合下記のようにするとリンクをクリックした時点で404が発生します。
public class ParameterTestPageFrom extends WebPage {
public ParameterTestPageFrom(){
PageParameters param = new PageParameters();
param.add("url","http://example.jp/");
add(new BookmarkablePageLink("next",ParameterTestPageTo.class, param));
}
}
この場合URLEncoderを使用してエンコーディングを行い、パラメータを受け取るクラス側(今回だとParameterTestPageToクラス)にてパラメータを取得する際にデコーディングを行うことで問題を回避できます。
public class ParameterTestPageFrom extends WebPage {
public ParameterTestPageFrom() throws UnsupportedEncodingException{
final PageParameters param = new PageParameters();
param.add("url", URLEncoder.encode("http://example.jp/", "UTF-8"));
add(new BookmarkablePageLink("next",ParameterTestPageTo.class, param));
}
}
public class ParameterTestPageTo extends WebPage {
public ParameterTestPageTo(PageParameters params) throws UnsupportedEncodingException{
//ここでデコーディングするのを忘れずに!
add(new Label("url", URLDecoder.decode(params.getString("url"), "UTF-8")));
}
}