一尘不染

如何在布尔值中保留NULL状态从JSP发送空字符串到Action

jsp

我在搜索页面中有一个条件是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文件中指定内容?

我正在使用(略有自定义)paramsPrepareParamsStack拦截器堆栈。

我觉得自己是否想念一些愚蠢的东西。


阅读 259

收藏
2020-06-10

共1个答案

一尘不染

由于XWorkBasicConverterconvert boolean-s 与转换-
s的方式完全相同,因此Boolean使用Boolean.valueOf()方法将空字符串or null转换为false

为了null提交后,您需要为此创建一个自定义转换器,Boolean或者根本不提交此参数。(例如name,如果选择的值为,则使用javascript
更改属性"")。

2020-06-10