1

自分のページにパラメーターを渡す必要がありますが、null の可能性があるパラメーターを渡す方法が見つかりません。

私が行った場合:

PageParameters pageParameters = new PageParameters ();
pageParameters.add ("key", null);

これにより、例外が発生します

java.lang.IllegalArgumentException: 引数 'value' は null ではない可能性があります。org.apache.wicket.util.lang.Args.notNull (Args.java:41) で

Google Guava の Optional を使用すると、 Optional オブジェクトが null を保持していない、つまり Optional.absent() と等しくない場合でも、オブジェクトをキャストする方法が見つかりません。

私のランディングページのコンストラクターで

StringValue sv = parameters.get ("key");
sv.to ( Optional.of (MyEnum.SOME_ENUM_CONSTANT).getClass () );

実行すると、次のエラーが表示されます。

org.apache.wicket.util.string.StringValueConversionException: 「Optional.of(SOME_ENUM_CONSTANT)」を型クラス com.google.common.base.Present に変換できません。

私は何か間違ったことをしていますか?

ウィケット 6 で null の可能性があるオブジェクトを渡す方法は他にありますか?

改札 1.4 では、改札 6 で消えたように見える PageParameters.NULL があることに気付きました。

ありがとうございました

4

2 に答える 2

3

これは単純すぎるかもしれませんが、何が問題なのですか

Object value = ?
if (value != null) {
    pageParameters.add ("key", value);
}

StringValue sv = pageParameters.get("key");
if (!sv.isNull()) {
    // process string value
}
于 2013-06-25T14:28:31.917 に答える
0

wicket 内のすべてのページ パラメータは、最終的に文字列として扱われます。アイデアは、ページ パラメータがリクエストの URL にあるということです。

javadoc から:

にページをマウントし/user、次の URL にアクセスしたとします/user/profile/bob?action=view&redirect=false。この例profilebobは、 と はそれぞれインデックス0とを持つインデックス パラメータ1です。actionおよびredirect名前付きパラメーターです。

のようなものを追加するとx=y&x、パラメーターxは 2 回表示されます。1 回は文字列yで、もう 1 回は空の文字列です。

あなたが達成しようとしていることに応じて、私はどちらかを提案します

  • null値が必要な場合はパラメータを渡さず、isNullまたはtoOptionalメソッドを使用してください。
  • インデックス付きパラメーターを使用して、特定の単語の存在をテストします
于 2013-06-25T14:32:54.173 に答える