2012-05-25 22 views
6

Jsf'de böyle bir şeye mümkün mü?JSF 1.2: JSF görünümünde yeniden kullanılabilir bileşen oluşturabilir miyim

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

Ben kendi bileşeni oluşturun ve jsf TagLib bunu kayıt olabilirsiniz biliyorum ama jsf görünüm dosya üzerinde sadece yeniden kullanılabilen HTML kodu gereklidir.

+0

JSF 2.0 kullanıyor musunuz? –

+0

Üzgünüm, bunu özete eklemeyi unutmayın. Ben 1.2 – Daggeto

cevap

4

Facelets 1.x'te bu amaç için bir etiket dosyası oluşturabilirsiniz.

İşte temel bir başlangıç ​​örneği. /WEB-INF/tags/some.xhtml oluşturun:

<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 bunu tanımlayın:

<?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 bunu Kayıt:

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

(Birden olduğunda notu, ; onları ayırmak için noktalı virgül kullanın)

Son olarak, ana sayfanızın şablonlarında belirtin.

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

Daha gelişmiş bir örnek

burada bulunabilir: How to make a grid of JSF composite component? Not: MTU 2.0 hedeflenebilir, ancak yukarıdaki örnekte dayalı küçük değişikliklerle bu Facelet'lerin 1.x üzerinde iyi çalışır

+0

kullanıyorum Bu yaklaşım için teşekkürler, ancak herhangi bir etiket kaydı olmadan bir jsf dosyasında yeniden kullanılabilir bileşen oluşturmak için bir yöntem olduğunu düşündüm. :) – Daggeto

+0

Bu, "my.taglib.xml" öğesindeki " /WEB-INF/tags/some.xhtml" öğesinin dışında çalışır. Çalışmasını sağlamak için ' tag/some.xhtml 'olarak değiştirdim. – acdcjunior