2013-10-29 19 views
0

我想在我的Struts2應用程序的表中顯示文本的開頭。它工作得很好,除非文本字段比我想要的長度短。如果字符串更短,JSP子串()不會顯示任何內容

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

如果key.text太短,不顯示任何內容。如果我刪除了substring()函數(但它通常太長,當然),一切都很好顯示。

除了測試text的長度,我還能做些什麼嗎?

+0

什麼?例如。 –

+0

可能只有'key.text.length> 40'' –

+0

例如'你想知道我怎麼做?'顯示,'我多大了'?'不是。 – Arthur

回答

2

好了,你正在運行到一個異常的位置:

...

拋出:IndexOutOfBoundsException - 如果的beginIndex爲負,或endIndex大的大此String對象的長度或beginIndex大於endIndex。

這就是爲什麼你沒有看到任何輸出的原因。

因此,您需要首先檢查長度。

+0

好吧,我沒有看到任何異常,我覺得這個測試有點無用,但是讓我們來做吧。 – Arthur

+0

將'struts.devMode'設置爲true,您將看到異常 –

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> 
+0

可能是oneliner。 –

+0

短if條件,不知道struts2的語法 –

+0

三元如果'? :' –

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 Z )。

+1

從未聽說過這一點。看起來不錯! – Arthur

相關問題