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

Jsf,限制要显示的字符数?,jsf,datatable,Jsf,Datatable,我正在开发一个jsf应用程序。我有一个dataTable,我使用一列来呈现Pojo的描述 问题是:这个描述太长,数据表不能完全实现。 是否有方法限制要在此数据表的description列上呈现的字符数,如:description desc desc…。如果您使用的是JSF 2,则可以从中使用函数 将名称空间放入WEB-INF/lib,在XHTML文件中相应地配置名称空间,如下所示: <html ... xmlns:of="http://omnifaces.org/functions">

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

问题是:这个描述太长,数据表不能完全实现。
是否有方法限制要在此数据表的description列上呈现的字符数,如:description desc desc…。

如果您使用的是JSF 2,则可以从中使用函数

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

<html ... xmlns:of="http://omnifaces.org/functions">
<h:column>
    <h:outputText value="#{of:abbreviate(someBean.myproperty, 20)}" />
</h:column>

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

<html ... xmlns:of="http://omnifaces.org/functions">
<h:column>
    <h:outputText value="#{of:abbreviate(someBean.myproperty, 20)}" />
</h:column>


请参阅。

如果您使用的是JSF2,则可以使用中的函数

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

<html ... xmlns:of="http://omnifaces.org/functions">
<h:column>
    <h:outputText value="#{of:abbreviate(someBean.myproperty, 20)}" />
</h:column>

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

<html ... xmlns:of="http://omnifaces.org/functions">
<h:column>
    <h:outputText value="#{of:abbreviate(someBean.myproperty, 20)}" />
</h:column>


请参阅。

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

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

假设您正在使用的POJO类(称之为
MyPOJO
)包含一个名为
description
的字符串属性。现在数据表将链接到列表或地图等。。。对于该对象,现在让我们将其设置为一个
“ArrayList theList”

您可以做的是在同一个类中有另一个属性
MyPOJO
。声明为
stringdescriptionontuntrated
,并在该字符串的getter方法中写入以下内容:

public String getDescriptionTruncated() {
  if (this.description == null) {
      return description;
  } else if (this.description.length() <= 20 ) {
    return description;
  } else {
    return description.substring(0,19);
  }
}
公共字符串getDescriptionControl(){
if(this.description==null){
返回说明;

}else if(this.description.length()如果您从数据库获取字符串,请尝试在从数据库获取数据时使用Substring SQL函数直接截断数据

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

假设您正在使用的POJO类(称之为
MyPOJO
)包含一个名为
description
的字符串属性。现在,数据表将链接到该对象的列表或映射等,现在让我们将其设为
“ArrayList”

您可以做的是在同一类中有另一个属性
MyPOJO
。声明为
String descriptionontuntrated
,并在该字符串的getter方法中编写以下内容:

public String getDescriptionTruncated() {
  if (this.description == null) {
      return description;
  } else if (this.description.length() <= 20 ) {
    return description;
  } else {
    return description.substring(0,19);
  }
}
公共字符串getDescriptionControl(){
if(this.description==null){
返回说明;

}否则,如果(this.description.length()像这样:?像这样:?不是一个好的解决方案,您不应该为了“使其适合”而截断数据在专栏中。你有一个很好的观点。其他解决方案可能是在从数据库中获取数据时,使用SQL子字符串函数直接截断数据。这两种方法都不是,也许你误解了MVC的概念:模型是应用程序中的数据,视图是向用户显示数据的组件。视图可能不会向用户显示整个数据用户,但模型可以拥有全部数据。@eljunior有一个很好的答案,因为您可以在两个不同的视图中使用来自模型的相同数据:第一个视图显示被截断的数据,第二个视图显示全部数据。请记住:视图应该具有关于如何显示数据的逻辑。感谢您的澄清。这不是一个好的解决方案,yo你不应该为了“使其适合”而截断数据在专栏中。你有一个很好的观点。其他解决方案可能是在从数据库中获取数据时,使用SQL子字符串函数直接截断数据。这两种方法都不是,也许你误解了MVC的概念:模型是应用程序中的数据,视图是向用户显示数据的组件。视图可能不会向用户显示整个数据用户,但模型可以有整个数据。@eljunior有一个很好的答案,因为您可以在两个不同的视图中使用模型中的相同数据:第一个视图显示被截断的数据,第二个视图显示整个数据。记住:视图应该有关于如何显示数据的逻辑。感谢您的澄清。这是一个完美的解决方案。谢谢!完美的解决方案。谢谢!