Jsf,限制要显示的字符数?

时间:2012-07-12 14:00:32

标签: jsf datatable

我正在开发一个jsf应用程序。我有一个dataTable,我使用一列来呈现Pojo的描述。

问题是:这个描述太长了,而dataTable并不是完全可见的。 有没有办法限制在此dataTable的描述列上呈现的caracteres数量,如:描述desc desc ...

2 个答案:

答案 0 :(得分:3)

如果您使用的是JSF 2,则可以使用of:abbreviate中的the OmniFaces project功能。

JAR file放在WEB-INF/lib中,在XHTML文件中相应地配置命名空间,如下所示:

<html ... xmlns:of="http://omnifaces.org/functions">

然后你可以在任何String属性上使用它,如:

<h:column>
    <h:outputText value="#{of:abbreviate(someBean.myproperty, 20)}" />
</h:column>

请参阅the demo here

答案 1 :(得分:0)

如果从数据库获取字符串,请尝试使用Substring SQL函数直接从数据库中获取数据。

如果没有,您可以尝试以下解决方案。

让我们说你正在使用的POJO类(称之为MyPOJO)包含一个名为description的String属性。现在,DataTable将链接到该对象的List或Map等...,现在让它成为"ArrayList<MyPOJO> theList"

您可以做的是在同一个班级MyPOJO中拥有另一个属性。将其声明为String descriptionTruncated并在该String的getter方法中写入以下内容:

public String getDescriptionTruncated() {
  if (this.description == null) {
      return description;
  } else if (this.description.length() <= 20 ) {
    return description;
  } else {
    return description.substring(0,19);
  }
}

我们假设所需长度为20。

然后在Datatable引用中新创建的String如下:

<h:datatable ...  var="pojoObj">

<h:column>
    <h:outputText value="#{pojoObj.descriptionTruncated}" />
</h:column>

希望有所帮助。