<td>${map.linkD2}person
<s:set name="d2" >${map.linkD2 / map.d2 * 100}</s:set>
<s:if test="d2.length => 4">
<s:set name="perD2" value="#d2.substring(0,4)"></s:set>
</s:if>
<s:else>
<s:set name="perD2" value="#d2"></s:set>
</s:else>
( ${perD2} )
</td>
我想使用d2.length
,但它不起作用。为什么呢?
d2.size()
也无效。
答案 0 :(得分:0)
String
有length()
方法。它的不属性。您在变量名称之前也错过了#
,而您的关系运算符也需要>=
而不是=>
。
<s:if test="#d2.length() >= 4">
<s:set name="perD2" value="#d2.substring(0,4)" />
</s:if>
答案 1 :(得分:0)
因为d2
不是集合,并且它没有属性length
。如果您想使用length()
表示法调用方法。
<s:if test="#d2.length() >= 4">
注意,如果使用set
标记创建变量并且从标记正文中指定值,则在赋值之前将其转换为String
并放入值堆栈上下文。应使用#
符号访问上下文变量。
如果它被转换为字符串,则不能将此变量用作数字类型。另一方面,如果您使用value
标记的set
属性,则该值将被指定为数字,即它保留变量的类型。
例如,
<s:set name="d2" value="%{map.linkD2 / map.d2 * 100}"/>
然后您应该使用d2
作为数字类型,即它没有length()
方法。