我需要将参数传递给我的页面,我找不到传递可能为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。
我做错了吗?
还有其他方法可以在wicket 6中传递一个可能为null的对象吗?
我注意到在wicket 1.4中他们有PageParameters.NULL似乎在wicket 6中消失了。
谢谢
答案 0 :(得分:3)
这可能太简单了,但
出了什么问题Object value = ?
if (value != null) {
pageParameters.add ("key", value);
}
和
StringValue sv = pageParameters.get("key");
if (!sv.isNull()) {
// process string value
}
答案 1 :(得分:0)
wicket中的所有页面参数最终都将被视为字符串。我们的想法是页面参数将出现在请求的URL上。
来自javadoc:
假设我们在
/user
上安装了一个页面,并且访问了以下网址/user/profile/bob?action=view&redirect=false
。在此示例中,profile
和bob
是具有相应索引0
和1
的索引参数。action
和redirect
是命名参数。
如果您添加x=y&x
之类的内容,参数x
将出现两次,一次使用字符串y
,另一次使用空字符串。
根据您要完成的任务,我建议
null
值时,请不要传递参数,并使用isNull
或toOptional
方法。