Bookmarkableなリンクのパラメータに「/」が入る場合下記のようにするとリンクをクリックした時点で404が発生します。

  1. public class ParameterTestPageFrom extends WebPage {
  2. public ParameterTestPageFrom(){
  3. PageParameters param = new PageParameters();
  4. param.add("url","http://example.jp/");
  5. add(new BookmarkablePageLink("next",ParameterTestPageTo.class, param));
  6. }
  7. }
この場合URLEncoderを使用してエンコーディングを行い、パラメータを受け取るクラス側(今回だとParameterTestPageToクラス)にてパラメータを取得する際にデコーディングを行うことで問題を回避できます。
  1. public class ParameterTestPageFrom extends WebPage {
  2. public ParameterTestPageFrom() throws UnsupportedEncodingException{
  3. final PageParameters param = new PageParameters();
  4. param.add("url", URLEncoder.encode("http://example.jp/", "UTF-8"));
  5. add(new BookmarkablePageLink("next",ParameterTestPageTo.class, param));
  6. }
  7. }
  1. public class ParameterTestPageTo extends WebPage {
  2. public ParameterTestPageTo(PageParameters params) throws UnsupportedEncodingException{
  3. //ここでデコーディングするのを忘れずに!
  4. add(new Label("url", URLDecoder.decode(params.getString("url"), "UTF-8")));
  5. }
  6. }