我正在开发一个jsf应用程序。我有一个dataTable,我使用一列来呈现Pojo的描述。
问题是:这个描述太长了,而dataTable并不是完全可见的。 有没有办法限制在此dataTable的描述列上呈现的caracteres数量,如:描述desc desc ...
答案 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>
希望有所帮助。