0

私はjsfアプリケーションに取り組んでいます。私は dataTable を持っています。1 つの列を使用して Pojo の説明を表示します。

問題は次のとおりです。この説明は長すぎて、dataTable が完全に読み取り可能ではありません。次のように、この dataTable の説明列にレンダリングする文字数を制限する方法はありますか: Description desc desc...

4

2 に答える 2

3

JSF 2 を使用している場合は、OmniFaces プロジェクトの:abbreviate の機能を使用できます。

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 関数を使用して、DB から取得するときにデータを直接切り捨ててみてください。

そうでない場合は、以下の解決策を試すことができます。

使用している POJO クラス ( と呼びますMyPOJO) に、 と呼ばれる String 属性が含まれているとしますdescription。これで、DataTable はそのオブジェクトの List または Map などにリンクされます"ArrayList<MyPOJO> theList"

できることは、同じクラスに別の属性を持つことですMyPOJOString descriptionTruncatedその String の getter メソッドとして as および in で次のように記述することを宣言します。

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 参照で、新しく作成された文字列を次のようにします。

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

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

それが役立つことを願っています。

于 2012-07-13T00:34:30.187 に答える