3

我正在尝试对 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”从列表中正确分配了一个字符串值。
该列表可能如下所示 [ "hello" , null , "world ]

当前输出:hello world
通缉输出:hello 0 world

/提前致谢

4

5 回答 5

4

试试不带#。

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

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

我总是使用这样的东西:

<s:if test="%{licenseStatusString != null}">
 ... something that uses licenseStatusString
</s:if>
于 2010-08-19T15:01:17.693 回答
3

这取决于您使用的是 Struts2.0.x 还是更高版本,因为自 Struts2.1.x 以来, idattribute 已被替换varattribute 。s:iterator

假设 Struts 2.1.x,最好的方法是分配var属性并将其用作变量(正如您已经建议的那样)

<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>

但是,如果你只需要打印String的结果,没有条件,不管是null还是的,就这么简单

<s:iterator value="bar">
    <s:property /> <!-- prints iterator current value or '' if its null -->
</s:iterator>

附言。不必在a的属性或 a 的属性%{}内使用 ognl 标记。tests:ifvalues:property

有关更多示例,请查看struts2 迭代器文档

于 2011-04-15T16:35:57.720 回答
1

您可以在一行中完成(单个 if 语句):

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

或添加更多字符串

<s:property value="%{col==null ? '0': 'The column is' + col}"/></s:else>
于 2016-08-08T13:51:20.450 回答
0

我已经解决了我的问题。

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

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

于 2010-08-20T08:17:02.980 回答
0

用于在 Struts2 的迭代器中执行此操作;在“测试子句”中,使用“#”来引用上下文变量。

            <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>
于 2017-05-16T22:51:16.460 回答