2012-03-26 85 views
9

我正在使用h:outputText顯示值。我想限制顯示的值,使得當它的長度大於50個字符時,它被截斷爲50個字符,省略號被附加到截斷值。例如:JSF 2.0:將h:outputtext的值限制爲特定數量的字符

This is some text that has been trun... 

我知道我可以在後臺bean實現這一點,但我想知道是否有人知道,能做到這一點任何標籤的無需添加代碼託管了。看起來像一個常見的用例。

謝謝。

回答

4

按照「JSF for nonbelievers」中的說明使用自定義JSF轉換器。 Here's文本截斷轉換器的一個例子。

+0

感謝。我還在Core Java Server Faces第3版中找到了一個部分,其中介紹瞭如何實現自定義轉換器和轉換器標籤。 – 2012-03-26 14:53:08

23

您可以使用JSF EL ..例如

<h:outputText value="#{bean.string.length() gt 50 ? bean.string.substring(0,47).concat('...') : bean.string}" /> 
+3

在需要的地方重複相同的邏輯很繁瑣。那麼擁有一個單一的可重複使用的轉換器甚至是一個EL功能就更容易了。 JSF實用程序庫OmniFaces具有一個':abbreviate()'函數。 – BalusC 2012-11-28 22:06:49

+0

你是對的..但假設情況是裁剪屬性的字符串像 ..在這種情況下,使用轉換器不是最佳選擇。 – YAM 2012-11-29 09:09:05

+3

這正是EL功能有用的時候。 – BalusC 2012-11-29 10:51:05

3

如前所述BalusC,OmniFace的of:abbreviate()可能是你的問題很好的解決方案:

<p>Abbreviate a long string: #{of:abbreviate(string1, 20)}</p> 
+2

剛剛使用過,效果很好,用於引用命名空間import是:xmlns:of =「http://omnifaces.org/functions」 – 2016-04-21 12:49:59

相關問題