我在搜索页面中有一个条件是boolean。由于它不是强制性的,因此我不能使用复选框,因为我可能想跳过它。
boolean
JSP
<s:select list = '#{ "":"Make your choice...", true:"FOO", false:"BAR" }' name = "myBooleanCriterion" />
行动
private Boolean myBooleanCriterion; /* Getter and Setter */
我们知道boolean默认为false,而Boolean默认为null,则第一次呈现页面时就可以了(显示 “做出选择” )。
false
Boolean
null
但是,在POST之后,Struts会实例化Boolean属性(默认为false),即使该属性找到""为值,因此当我返回JSP时,该值也会预先选择为false( “ BAR” )。
""
如果值是"",则如何指示Struts不创建该变量的实例,将其保留为原始null状态?我是否需要创建一个Converter或在.properties文件中指定内容?
.properties
我正在使用(略有自定义)paramsPrepareParamsStack拦截器堆栈。
paramsPrepareParamsStack
我觉得自己是否想念一些愚蠢的东西。
由于XWorkBasicConverterconvert boolean-s 与转换- s的方式完全相同,因此Boolean使用Boolean.valueOf()方法将空字符串or null转换为false。
XWorkBasicConverter
Boolean.valueOf()
为了null提交后,您需要为此创建一个自定义转换器,Boolean或者根本不提交此参数。(例如name,如果选择的值为,则使用javascript 更改属性"")。
name