私は単純にPrimefacesカラムタグを次のようなタグ付きラッパーの中に入れていますが、sortByとfilterBy EL式は正しく計算されておらず、私のLazyModelでメソッドをロードします。とき私の方法、しかしPrimefaces filterByとsortByが空でELが評価されていない
<p:dataTable id="mainTable" widgetVar="tblTable" var="c"
value="#{applicationBean.lazyModel}" lazy="true"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginator="true" rows="10" style="margin-bottom:20px"
selectionMode="single" selection="#{applicationBean.selected}"
paginatorPosition="bottom" rowKey="#{c.id}">
<ex:column label="First Name" property="#{c.firstName}"
filter="true" sort="true" filterMatchMode="contains" />
:私は次のことをやっているコードの私のメインの部分では
<ui:composition
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:ang="http://ang.com/jsf/facelets">
<p:column headerText="#{label}" sortable="#{sort}" sortBy="#{property}" filterBy="#{property}" filterable="#{filter}" filterMatchMode="#{filterMatchMode}">
<h:outputText value="#{property}" />
</p:column>
:コラム:
基本的に、私は、次のタグの元を持っていますLazy Load Beanでロードデータが呼び出されていますが、sortByカラムとfilterByカラムは "firstName"ではなく "property"として渡されています。
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters)
EL式がfilterByとsortByタグで計算されない理由はありますか?
ちょうどあなたの情報のために、列は適切にレンダリングされます。私はテーブル内のすべてのコンテンツを見ることができますが、ソートやフィルタリングのためにクリックすると、プロパティが存在しないという例外が発生します。
sortByとfilterByの代わりにfield = "#{property}"でプレイしようとしましたが、sortByの場合は となります。 field属性を使用すると、filter byはまだ空になっています。
あなたにそれを渡すように評価されるELを防ぐために 'bean'と' field'にあなたの財産を分割するようにしてください成分。あなたのXHTMLでは、 'bean ="#{c} "フィールド=" firstName "'を使用し、コンポーネントでは 'sortyBy ="#{bean [field]} "'を使用します。 –
ジャスパーは、豆はフィールド自体を保持していないことを観察します。それはテーブルから派生したvarです。でも、私は試しました。メソッドのロードは現在、 "bean [field]"という文字列を受け取ります。表現はまだ評価されていません。 XHTML:bean = "#{c}" field = "firstName";コンポーネント:filterBy = "#{bean [field]}" - > loadはEL式を評価する代わりにString = bean [field]で呼び出されます。私もfilterBy = "#{フィールド}"を試して、私のメソッドは "firstName"ではなく "field"という文字列を受け取ります。 –
あなたのアイデアを使って、Jasperは次の答えを得ました:1 - varとフィールド名を分割します。 2 - フィールド変数にフィールド名を挿入します。 XHTML:var = "#{c}" field = "firstName";コンポーネント:フィールド= "#{フィールド}" sortBy = "#{フィールド}" filterBy = "#{フィールド}"。 「フィールド」はここで最も重要な部分です。あなたがそれを使用しない場合、それは動作しません。 –