Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过Wicket 6中的PageParameters将可为null的参数传递给页面_Java_Wicket_Guava_Wicket 1.6 - Fatal编程技术网

Java 通过Wicket 6中的PageParameters将可为null的参数传递给页面

Java 通过Wicket 6中的PageParameters将可为null的参数传递给页面,java,wicket,guava,wicket-1.6,Java,Wicket,Guava,Wicket 1.6,我需要向我的页面传递一个参数,但我找不到传递可能为null的参数的方法 如果我这样做: PageParameters pageParameters = new PageParameters (); pageParameters.add ("key", null); 这将导致异常 java.lang.IllegalArgumentException:参数“value”不能为null。 位于org.apache.wicket.util.lang.Args.notNull(Args.java:41)

我需要向我的页面传递一个参数,但我找不到传递可能为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,我找不到任何方法来强制转换该对象,即使该可选对象不包含null ie not equals to Optional.缺席():

在我的登录页的构造函数中

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中是否有其他方法可以传递可能为空的对象

我注意到在wicket 1.4中它们有PageParameters.NULL,这在wicket 6中似乎已经消失了


谢谢你

这可能太简单了,但你怎么了

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


wicket中的所有页面参数最终将被视为字符串。其思想是页面参数将位于请求的URL上

从javadoc:

假设我们在
/user
上挂载了一个页面,并且访问了以下url
/user/profile/bob?action=view&redirect=false
。在本例中,
profile
bob
是索引参数,其索引分别为
0
1
<代码>操作和
重定向
是命名参数

如果添加类似
x=y&x
,参数
x
将出现两次,一次是字符串
y
,另一次是空字符串

取决于你想要完成什么,我建议你

  • 当需要
    null
    值时,不要传递参数,并使用
    isNull
    toOptional
    方法
  • 使用索引参数并测试是否存在某个单词

如果参数为null,为什么不省略它并检查它是否存在于构造函数中?
StringValue sv = pageParameters.get("key");
if (!sv.isNull()) {
    // process string value
}