0

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

问题是:这个描述太长了,dataTable 不是很清晰。有没有办法限制要在此数据表的描述列上呈现的字符数,例如:Description desc desc ...

4

2 回答 2

3

如果您使用的是 JSF 2,则可以使用OmniFaces项目的缩写功能。

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

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

然后您可以在任何 String 属性上使用它,如下所示:

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

在此处查看演示

于 2012-07-12T21:31:57.867 回答
0

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

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

假设MyPOJO您正在使用的 POJO 类(调用它)包含一个名为description. 现在 DataTable 将链接到该对象的 List 或 Map 等...,现在让它成为一个"ArrayList<MyPOJO> theList"

你可以做的是在同一个类中有另一个属性MyPOJO。声明 asString 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。

然后在数据表中引用新创建的字符串,如下所示:

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

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

希望有帮助。

于 2012-07-13T00:34:30.187 回答