0

私はJSFが初めてです。JSFとprimefacesを使用してWebアプリケーションを構築しています。テーブルを表示する必要がある場所がたくさんあります。テーブルには、ページング、サイズ変更可能な列、右クリックでコンテキスト メニューが必要な場所などがあるはずです。

dataTableこれは、primefaces が提供するコンポーネントを使用して実装できます。しかし、よりカスタマイズ可能なコンポーネントとして作成したいと思います。再利用可能な javascript/jquery ( Jqgrid ) プラグインのようなもので、いくつかのプロパティ値を設定するだけで十分なはずです。

すべての場所で再利用してパラメーターを設定できるコンポーネントが作成された場合、すべての機能のコード全体を記述する代わりに、同様の方法を実行したいと思います (例: columnResizable='true', columnSortable='true')これにより、開発時間を節約できます。

それを達成する方法の写真がありません。誰かがそれを導くことができれば、それは素晴らしいことです。コード全体を期待しているわけではありません.JSFを使用してこれを実装するというアイデアは本当に高く評価されます.

4

1 に答える 1

3

#{cc.attrs.param1}複合コンポーネントを使用する必要があります。必要な数のパラメーターを渡し、構文を使用してそれに応じてカスタマイズできます。サンプルの XHTML を次に示します。

複合部品

<ui:component xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:u="http://java.sun.com/jsf/composite/ui" xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:s="http://jboss.org/seam/faces" xmlns:p="http://primefaces.org/ui" xmlns:cc="http://java.sun.com/jsf/composite">
    <cc:interface>
        <cc:attribute name="tableId" />
        <cc:attribute name="param1" />
        <cc:attribute name="param2" default="false" />
        <cc:attribute name="param3" required="true" />
    </cc:interface>
    <cc:implementation>
        <p:dataTable id="#{cc.attrs.tableId}" rendered="#{cc.attrs.param2}" value="#{cc.attrs.param1}" var="result" emptyMessage="#{messages['global.noItemsFound']}">
                            <ui:include src="#{cc.attrs.param3}" />
        </p:dataTable>
    </cc:implementation>
</ui:component>

<c:if test="#{not empty cc.attrs.param4}">または属性を使用しrenderedて、コンポーネントをさらにカスタマイズできます

意見

複合 myList.xhtml を呼び出してみましょう。

<u:myList param1="#{backingbean.results}" param2="true" id="list1" param3="/items/columns.xhtml" />

ビューにヘッダーを配置することを忘れないでください。

xmlns:u="http://java.sun.com/jsf/composite/ui"

列.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.org/seam/faces" xmlns:u="http://java.sun.com/jsf/composite/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
    <p:column  headerText="Name">
        <h:outputText value="#{result.name}" />
    </p:column>
    <p:column  headerText="Salary">
        <h:outputText value="#{result.salary}" />
    </p:column>
    <p:column  headerText="Age">
        <h:outputText value="#{result.age}" />
    </p:column>
</ui:composition>

列の個別のビューを含める代わりに<p:columns>、複合コンポーネントで使用し、列データを含む別のリストをパラメーターとして渡します。動的列

于 2014-01-15T09:38:30.187 に答える