我想在Struts2应用程序的表格中显示文本的开头。它工作正常,除非文本字段短于我想要的长度。
<td>
<s:property value="key.text.substring(0,40)" />...
</td>
如果key.text
太短,则不显示任何内容。如果我删除了substring()
功能,那么一切都会很好地展示(当然,这通常太长了。)
除了测试text
长度以外,我还能做些什么吗?
答案 0 :(得分:2)
嗯,你在这里遇到了一个例外:
子
...
抛出:IndexOutOfBoundsException - 如果beginIndex为负数,或者endIndex大于此String对象的长度,或者beginIndex大于endIndex。
这就是您没有看到任何输出的原因。
因此,您需要先检查长度。
答案 1 :(得分:2)
传递给力量的光明面并仅使用CSS ...
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>