0

我想在我的 Struts2 应用程序的表格中显示文本的开头。它工作得很好,除非文本字段比我想要的长度短。

<td>
    <s:property value="key.text.substring(0,40)" />...
</td>

如果key.text太短,则不显示任何内容。如果我删除该功能,一切都会很好地显示substring()(当然,它通常太长了)。

除了测试text长度,我能做些什么吗?

4

3 回答 3

2

传递到原力的光明面并仅为此使用 CSS...

Running Demo

HTML

<table>
    <tr>
        <td><s:property value="key.text"/></td>
    </tr>
</table>

CSS

td {
    overflow:hidden;
    text-overflow:ellipsis;
    white-space: nowrap; 
    display: inline-block;
    width:200px;
}

这样,您将对整体宽度进行精确控制,因为您以像素表示它,同时限制了许多字符,但您的宽度无法预测:(40I比 40 短Z)。

于 2013-10-29T10:41:44.910 回答
2

好吧,您在这里遇到了异常:

子串

...

抛出: IndexOutOfBoundsException - 如果 beginIndex 为负数,或者 endIndex 大于此 String 对象的长度,或者 beginIndex 大于 endIndex。

这就是您看不到任何输出的原因。

因此,您需要先检查长度。

于 2013-10-29T10:20:24.893 回答
1

尝试这个:

<td>
   <s:if test="key.text.length() > 40"> 
      <s:property value="key.text.substring(0,40)" />
   </s:if>
   <s:else>
      <s:property value="key.text" />
   </s:else>
</td>
于 2013-10-29T10:22:46.490 回答