2012-05-25 18 views
6

जेएसएफ में ऐसा कुछ करना संभव है?जेएसएफ 1.2: क्या मैं जेएसएफ व्यू के अंदर पुन: प्रयोज्य घटक बना सकता हूं

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

मैं जानता हूँ कि मैं अपने ही घटक बना सकते हैं और JSF taglib में यह रजिस्टर कर सकते हैं, लेकिन मैं JSF दृश्य फ़ाइल पर केवल में पुन: प्रयोज्य एचटीएमएल की जरूरत है।

+0

क्या आप जेएसएफ 2.0 का उपयोग कर रहे हैं? –

+0

क्षमा करें, मैं इसे संक्षेप में जोड़ना भूल जाता हूं। मैं 1.2 – Daggeto

उत्तर

4

फेसलेट्स 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> 

एक और अधिक उन्नत उदाहरण यहां पाया जा सकता है: How to make a grid of JSF composite component? नोट: JSF 2.0 लक्षित है, लेकिन ऊपर के उदाहरण के आधार पर मामूली बदलाव के साथ इसे Facelets 1.x. पर के रूप में अच्छा काम करता है

+0

का उपयोग इस दृष्टिकोण के लिए धन्यवाद, लेकिन मैंने सोचा कि किसी भी टैग पंजीकरण के बिना, एक जेएसएफ फ़ाइल के अंदर पुन: प्रयोज्य घटक बनाने की विधि है। :) – Daggeto

+0

यह 'my12aglib.xml' में' /WEB-INF/tags/some.xhtml 'तत्व को छोड़कर, यह काम करता है। मुझे इसे काम करने के लिए इसे ' टैग/some.xhtml 'में बदलना पड़ा। – acdcjunior

संबंधित मुद्दे