我正在开发一个 jsf 应用程序。我有一个数据表,我使用一列来呈现 Pojo 的描述。
问题是:这个描述太长了,dataTable 不是很清晰。有没有办法限制要在此数据表的描述列上呈现的字符数,例如:Description desc desc ...
如果您使用的是 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>
在此处查看演示。
如果您从数据库中获取字符串,请尝试在从数据库中获取数据时直接使用 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>
希望有帮助。