Strut 2的Struts 1逻辑是什么:空标记?
<logic:empty name="foo">
Foo is null or the empty string
</logic:empty>
感谢。
答案 0 :(得分:8)
没有struts2标签可以做到这一点,OGNL比struts1标签有更多的可能性和更强的表现力,但是似乎没有办法像简洁地检查null和空字符串的字符串。 / p>
以下作品:
<s:if test="(myString == null || myString.equals(''))">
myString is blank or null
</s:if>
<s:else>
The value is <s:property value="myString"/>
</s:else>
测试依赖于短路,因此无法通过相等测试来改变null的测试。
如果经常需要对此进行测试,则可能存在设计问题。通过适当的验证,你不应该有视图所依赖的未初始化的对象,但我想总有例外。
答案 1 :(得分:3)
添加到Quaternion的答案:
您始终可以在操作中添加方法以检查特定条件,例如MyAction.isPropertyXEmpty()
将其置于<if test=...>
条件
回想一下,在Struts2中,属性比Struts更富有类型/表现力。如果其他类型更合适,请不要使用字符串。并且您可以将它们初始化为非空值(例如,空字符串)以避免出现空问题。
答案 2 :(得分:1)
要扩展Steven的评论,您可以使用
导入<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
然后使用:
<c:if test="${empty myStruts2Var}">
或
<c:if test="${not empty myStruts2Var}">
答案 3 :(得分:0)
对于字符串,我会使用:
main.js
对于收藏品,我会使用:
<s:if test="myString in {null, ''}">
希望这对可读性有益。