Struts2,String null check

时间:2010-08-19 14:51:58

标签: jsp struts2 null-check

我正在尝试对String进行空检查,但它不起作用。

<s:iterator value="matrix" var="row">
    <tr>
       <s:iterator value="value" var="col">
            <td>    
                <s:if test="%{#col==null}">0</s:if>
                <s:else><s:property value="col"/></s:else>
            </td>
        </s:iterator>
    </tr>
</s:iterator>

矩阵是

Map<Integer, List<String>>

var“col”从List中正确分配了一个String值 列表可能看起来像这样[“hello”,null,“world]

当前输出:你好世界
通缉输出:你好 0 世界

/提前致谢

5 个答案:

答案 0 :(得分:4)

没有#。

尝试
 <s:if test="%{col==null}">0</s:if>

我认为has会首先尝试解析'col',并使用col的值作为属性名称。由于它是空的,它会将“”作为属性名称进行比较,属性名称是值堆栈的顶部。我不确定这会如何评估。

我总是使用这样的东西:

<s:if test="%{licenseStatusString != null}">
 ... something that uses licenseStatusString
</s:if>

答案 1 :(得分:3)

这取决于您使用的是Struts2.0.x还是更高版本,因为id的{​​{1}}属性var属于s:iterator自Struts2以来的var属性。 1.x的。

Asuming Struts 2.1.x,最好的方法是分配<s:iterator value="bar" var="foo"> <s:if test="#foo==null || #foo==''">0</s:if> </s:iterator> 属性并将其用作变量(如您所建议的那样)

top

您可能还希望使用<s:iterator value="bar"> <s:if test="top==null || top==''">0</s:if> </s:iterator> 变量来获取最高堆栈值,但它可能会与您的对象属性冲突。仍然有效

null

但是,如果您只需要打印String的结果,没有条件,无论是<s:iterator value="bar"> <s:property /> <!-- prints iterator current value or '' if its null --> </s:iterator> 还是为空,只需要像这样简单地执行

%{}

聚苯乙烯。没有必要在test的{​​{1}}属性或s:if的{​​{1}}属性中使用ognl标记 value

有关更多示例,请查看replaced

答案 2 :(得分:0)

我已经解决了我的问题。

<s:if test="%{#col==''}">0 </s:if>

字符串数组中的值不是null,而是空字符串。

答案 3 :(得分:0)

您可以在一行(单个if语句)中执行此操作:

<s:property value="%{col==null ? '0':col}"/></s:else>

或添加更多字符串

<s:property value="%{col==null ? '0': 'The column is' + col}"/></s:else>

答案 4 :(得分:0)

在Struts2中的迭代器中进行;在'Test Clause'中,使用'#'来引用上下文变量。

            <s:iterator value="pageVo.voList" var="vo">
                    <s:if test="%{#vo.iconclass != null}">
                        <i class="${vo.iconclass}"></i>
                    </s:if>
                    <s:if test="%{#vo.label != null}">
                        ${vo.label}
                    </s:if>
                </button>
            </s:iterator>