Struts2,字符串空检查

发布于 2024-09-14 22:17:25 字数 653 浏览 4 评论 0原文

我试图对字符串进行空检查,但它不起作用。

<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

/提前致谢

I'm trying to do a null check on a String but it won't work.

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

matrix is a

Map<Integer, List<String>>

The var "col" is correctly assigned a String value from the List.
The list may look like this [ "hello" , null , "world ]

Current output: hello world
Wanted output: hello 0 world

/Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

安静 2024-09-21 22:17:25

尝试不带#。

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

我认为 has 将首先尝试解析“col”,并使用 col 的值作为属性名称。因为它是空的,所以它会比较“”作为属性名称,这是值堆栈的顶部。我不确定这里会如何评价。

我总是使用这样的东西:

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

Try it without the #.

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

I think the has will attempt to resolve 'col' first, and use the value of col as the property name. Since that'd be empty, it'd do a comparison of "" as the property name, which is the top of the value stack. I'm not sure how that would evaluate here.

I always use something like this:

<s:if test="%{licenseStatusString != null}">
 ... something that uses licenseStatusString
</s:if>
不回头走下去 2024-09-21 22:17:25

这取决于您使用的是 Struts2.0.x 还是更高版本,因为 id 属性已 自 Struts2.1.x 起替换了 s:iterator 中的 var 属性。

假设 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 还是 empty,只需像这个

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

Ps 一样简单即可。没有必要在 s:iftest 属性内使用 ognl 标记 %{},或者s:propertyvalue 属性。

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

It depends whether you're using Struts2.0.x or a higher version, as id attribute has been replaced for var attribute in s:iterator since Struts2.1.x.

Asuming Struts 2.1.x, the best way is to assign var attribute and use it as a variable (as you already suggested)

<s:iterator value="bar" var="foo">
    <s:if test="#foo==null || #foo==''">0</s:if>
</s:iterator>

You may also want to use top variable to get top stack value, but it may enter in conflict with your objects attributes. Still it works

<s:iterator value="bar">
    <s:if test="top==null || top==''">0</s:if>
</s:iterator>

But, if you only need to print String's result, with no conditions, whether it is null or empty, just do it as simple as this

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

Ps. It's not necessary to use ognl markup %{} inside the test attribute of a s:if, or the value attribute of a s:property.

For more examples check struts2 iterator doc

极致的悲 2024-09-21 22:17:25

我已经解决了我的问题。

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

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

I have solved my problem.

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

The value in the string array wasn't null but an empty String.

如痴如狂 2024-09-21 22:17:25

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

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

或添加更多字符串

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

You can do it in one line ( single if statement):

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

Or add more string

<s:property value="%{col==null ? '0': 'The column is' + col}"/></s:else>
_蜘蛛 2024-09-21 22:17:25

用于在 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>

For doing it inside iterator in Struts2; inside 'Test Clause', use '#' to refer to the context variable.

            <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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文