10

JSF 2.0 を使用しています。タグファイルを使用してカスタム JSTL タグを作成しましたが、それは JSP で正常に機能していました。しかし、Facelets でもカスタム JSTL タグを使用したいと考えています。Faceletsでタグファイルを作成することは可能ですか?

4

1 に答える 1

17

「カスタムJSTLタグ」は正直意味がありません。この用語はまったく意味がありません。JSTLはすでにそれ自体がtaglibです。JSTL wikiページの紹介段落を注意深く読んで、JSTLが実際に何であるかを学んでください。あなたはおそらく実際には「カスタムJSPタグ」を意味していました。もちろん、Faceletsでは機能しません。これはJSPとは完全に異なるビューテクノロジであり、実際には非推奨のJSPの後継です。

「カスタムJSPタグ」の例えは、「カスタムFaceletsタグ」、またはより一般的には「Faceletsタグファイル」です。それはかなり単純で、インクルードファイルと同じ構文に従うことができます。

/WEB-INF/tags/some.xhtml

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">
    Hello World
    ...
    <ui:insert /> <!-- This inserts tag body, if necessary. -->
</ui:composition>

次のように登録し/WEB-INF/example.taglib.xmlます。

<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
    version="2.0">
    <namespace>http://example.com/jsf/facelets</namespace>
    <tag>
        <tag-name>some</tag-name>
        <source>tags/some.xhtml</source>
    </tag>
</facelet-taglib>

これは次のように登録さ/WEB-INF/web.xmlれます。

<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/example.taglib.xml</param-value>
</context-param>

(ファイルがのJARのフォルダにあるweb.xml場合は、の登録は不要であることに注意してください)*.taglib.xml/META-INF/WEB-INF/lib

最後に、次のようにテンプレートで使用します。

<html ... xmlns:my="http://example.com/jsf/facelets">
...
<my:some />

参照:

于 2013-02-07T13:19:26.080 に答える