我想在我的Struts2應用程序的表中顯示文本的開頭。它工作得很好,除非文本字段比我想要的長度短。如果字符串更短,JSP子串()不會顯示任何內容
<td>
<s:property value="key.text.substring(0,40)" />...
</td>
如果key.text
太短,不顯示任何內容。如果我刪除了substring()
函數(但它通常太長,當然),一切都很好顯示。
除了測試text
的長度,我還能做些什麼嗎?
我想在我的Struts2應用程序的表中顯示文本的開頭。它工作得很好,除非文本字段比我想要的長度短。如果字符串更短,JSP子串()不會顯示任何內容
<td>
<s:property value="key.text.substring(0,40)" />...
</td>
如果key.text
太短,不顯示任何內容。如果我刪除了substring()
函數(但它通常太長,當然),一切都很好顯示。
除了測試text
的長度,我還能做些什麼嗎?
好了,你正在運行到一個異常的位置:
子
...
拋出:IndexOutOfBoundsException - 如果的beginIndex爲負,或endIndex大的大此String對象的長度或beginIndex大於endIndex。
這就是爲什麼你沒有看到任何輸出的原因。
因此,您需要首先檢查長度。
好吧,我沒有看到任何異常,我覺得這個測試有點無用,但是讓我們來做吧。 – Arthur
將'struts.devMode'設置爲true,您將看到異常 –
試試這個:
<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>
可能是oneliner。 –
短if條件,不知道struts2的語法 –
三元如果'? :' –
傳遞給力的光明面,並使用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 Z
)。
從未聽說過這一點。看起來不錯! – Arthur
什麼?例如。 –
可能只有'key.text.length> 40'' –
例如'你想知道我怎麼做?'顯示,'我多大了'?'不是。 – Arthur