如何在Struts 2中使用length属性

时间:2015-02-02 05:11:25

标签: jsp struts2

<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()也无效。

2 个答案:

答案 0 :(得分:0)

Stringlength()方法。它的属性。您在变量名称之前也错过了#,而您的关系运算符也需要>=而不是=>

<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()方法。