2012-05-25 9 views
6

Ist in jsf so etwas möglich?JSF 1.2: Kann ich wiederverwendbare Komponente innerhalb der JSF-Ansicht erstellen

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

Ich weiß, ich kann meine eigene Komponente erstellen und es in JSF TagLib registrieren, aber ich brauche wieder verwendbare HTML nur in auf JSF View-Datei.

+0

Verwenden Sie JSF 2.0? –

+0

Sorry, ich vergesse dies zur Zusammenfassung hinzuzufügen. Ich benutze 1.2 – Daggeto

Antwort

4

In Facelets 1.x können Sie eine Tag-Datei für diesen Zweck erstellen.

Hier ist ein grundlegendes Kickoff-Beispiel. Erstellen /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> 

definieren es in /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> 

Registrieren Sie in /WEB-INF/web.xml:

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

(beachten Sie, wenn Sie mehrere haben, verwenden Sie Semikolon ; sie zu trennen)

Schließlich deklarieren Sie es einfach in Ihrer Hauptseite Vorlagen. How to make a grid of JSF composite component? Hinweis:

<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> 

Ein fortgeschrittenere Beispiel kann hier gefunden werden JSF 2.0 gezielt, aber mit geringfügigen Änderungen, basierend auf obiges Beispiel funktioniert es so gut auf Facelets 1.x

+0

Danke für diesen Ansatz, aber ich dachte, es gibt eine Methode, um wiederverwendbare Komponente in einer JSF-Datei, ohne jede Tag-Registrierung zu erstellen. :) – Daggeto

+0

Dies funktioniert, bis auf das ' /WEB-INF/tags/some.xhtml' Element in der 'my.taglib.xml'. Ich musste es in ' Tags/some.xhtml' ändern, damit es funktioniert. – acdcjunior

Verwandte Themen