JSF 2.0:将h:outputtext的值限制为特定数量的字符

Jus*_*ble 14 jsf jsf-2

我正在使用h:outputText来显示一个值.我想限制显示的值,使得当它长度超过50个字符时,它被截断为50个字符,省略号将附加到截断值.例如:

This is some text that has been trun...
Run Code Online (Sandbox Code Playgroud)

我知道我可以在支持bean中实现这一点,但我想知道是否有人知道任何可以实现此目的的标签,而无需向托管服务器添加代码.似乎是一个常见的用例.

谢谢.

YAM*_*YAM 26

例如,您可以使用JSF EL ..

<h:outputText value="#{bean.string.length() gt 50 ? bean.string.substring(0,47).concat('...') : bean.string}" />
Run Code Online (Sandbox Code Playgroud)

  • 在需要的地方重复相同的逻辑是很繁琐的.这样就更容易拥有一个可重复使用的转换器甚至EL功能.JSF实用程序库OmniFaces有一个`of:abbreviate()`函数用于此目的. (5认同)
  • 这正是EL函数有用的时候. (4认同)

Har*_*_OK 7

BalusC所述,OmniFace的of:abbreviate()可能是解决您的问题的好方法:

<p>Abbreviate a long string: #{of:abbreviate(string1, 20)}</p>
Run Code Online (Sandbox Code Playgroud)

  • 刚刚使用过,效果很好,供参考的名称空间导入是:xmlns:of =“ http://omnifaces.org/functions” (3认同)

Bor*_*vić 4

使用自定义 JSF 转换器,如“面向非信徒的 JSF ”中所述。这是文本截断转换器的示例。