6

jsfでこのようなことは可能ですか?

<ui:composition>
  <x:reusableCode id="editScreen">InnerHtml ... </x:reusableCode>
  code...
  <x:use component="editScreen"/>
</ui:composition

独自のコンポーネントを作成してjsftagLibに登録できることはわかっていますが、再利用可能なHTMLはjsfビューファイルでのみ必要です。

4

1 に答える 1

4

Facelets 1.x では、この目的のためにタグ ファイルを作成できます。

基本的なキックオフの例を次に示します。作成/WEB-INF/tags/some.xhtml:

<ui:composition 
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <h:outputText value="#{foo}" />
</ui:composition>

で定義し/WEB-INF/my.taglib.xmlます:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE facelet-taglib PUBLIC
    "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
    "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">

<facelet-taglib>
    <namespace>http://example.com/jsf/facelets</namespace>
    <tag>
        <tag-name>some</tag-name>
        <source>/WEB-INF/tags/some.xhtml</source>
    </tag>
</facelet-taglib>

に登録し/WEB-INF/web.xmlます。

<context-param>
    <param-name>facelets.LIBRARIES</param-name>
    <param-value>/WEB-INF/my.taglib.xml</param-value>
</context-param>

(複数ある場合はセミコロン;で区切ります)

最後に、メイン ページ テンプレートで宣言するだけです。

<ui:composition 
    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:my="http://example.com/jsf/facelets"
>
    <my:some foo="value1" />
    <my:some foo="value2" />
    <my:some foo="value3" />
</ui:composition>

より高度な例がここにあります: JSF 複合コンポーネントのグリッドを作成する方法は? 注: JSF 2.0 を対象としていますが、上記の例に基づいた小さな変更により、Facelets 1.x でも同様に機能します。

于 2012-05-25T11:43:35.243 に答える