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