如果String更短,则JSP substring()不显示任何内容

时间:2013-10-29 10:15:51

标签: java jsp struts2

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

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

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

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

3 个答案:

答案 0 :(得分:2)

嗯,你在这里遇到了一个例外:

  

     

...

     

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

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

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

答案 1 :(得分: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;
}

通过这种方式,您可以精确控制整体宽度,因为您以像素表示,同时限制了多个字符,无法预测宽度:(40 I小于40 { {1}})。

答案 2 :(得分: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>