SORU
25 Ocak 2011, Salı


Nasıl XHTML AKSARAY 2.0 Facelets kullanarak başka bir XHTML vardır?

Bir XHTML sayfası içinde başka bir XHTML sayfası dahil etmek için en doğru yolu nedir? Farklı yollar denedim, hiçbiri çalışmıyor.

CEVAP
25 Ocak 2011, Salı


<ui:include>

En basit yolu <ui:include>. Eklenen içeriği <ui:composition> içine yerleştirilmiş olmalıdır.

Ana Sayfa başlama örnek 9**:

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h:head>
        <title>Include demo</title>
    </h:head>
    <h:body>
        <h1>Master page</h1>
        <p>Master page blah blah lorem ipsum</p>
        <ui:include src="/WEB-INF/include.xhtml" />
    </h:body>
</html>

Sayfa Ekle /WEB-INF/include.xhtml (evet, bu bütünüyle dosya <ui:composition> Facelets ile yine de göz ardı edilir gibi gereksiz dışında herhangi bir etiket):

<ui:composition 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h2>Include page</h2>
    <p>Include page blah blah lorem ipsum</p>
</ui:composition>

Bu /page.xhtml tarafından açılması gerekir. <html>, <h:head> içi <h:body> tekrar gerek yok unutmayın aksi invalid HTML sonuç olarak dosya vardır.


<ui:define>/<ui:insert>

Dahil olmak üzere daha gelişmiş bir yoldurşablon oluşturma. Bu diğer taraftan temelde içerir. Ana Sayfa <ui:insert> Ekle tanımlı şablon içerik için yerler ilan için kullanmalıdır. Ana Sayfa şablonu kullanarak şablon istemci sayfa <ui:define> eklenecek olan şablon içeriğini tanımlamak için kullanın.

Ana Sayfa şablonu /WEB-INF/template.xhtml (gibi bir tasarım ipucu: başlık, menü ve altbilgi bile <ui:include> dosyaları):

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <h:head>
        <title><ui:insert name="title">Default title</ui:insert></title>
    </h:head>
    <h:body>
        <div id="header">Header</div>
        <div id="menu">Menu</div>
        <div id="content"><ui:insert name="content">Default content</ui:insert></div>
        <div id="footer">Footer</div>
    </h:body>
</html>

Şablonu istemci sayfa /page.xhtml (template öznitelik; aynı zamanda burada, bu bütünüyle dosyasını Not):

<ui:composition template="/WEB-INF/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

    <ui:define name="title">
        New page title here
    </ui:define>

    <ui:define name="content">
        <h1>New content here</h1>
        <p>Blah blah</p>
    </ui:define>
</ui:composition>

Bu /page.xhtml tarafından açılması gerekir. <ui:define>, varsayılan içerik içindeyse yok <ui:insert> varsa yerine görüntülenir.


<ui:param>

<ui:param> <ui:include> <ui:composition template> için parametreleri geçirebilirsiniz.

<ui:include ...>
    <ui:param name="foo" value="#{bean.foo}" />
</ui:include>
<ui:composition template="...">
    <ui:param name="foo" value="#{bean.foo}" />
    ...
</ui:composition >

/Şablon dosyası vardır içinde, #{foo} olarak kullanılabilir olacak. İhtiyacın olursa geçmek "pek çok" parametreleri <ui:include>, o halde düşünün kayıt vardır dosya olarak bir tagfile, böylece sonuçta kullanmak gibi <my:tagname foo="#{bean.foo}">. Ayrıca When to use <ui:include>, tag files, composite components and/or custom components? bkz


Tasarım ipuçları

Dosyaları hangi sektöre kamuya açık tarafından giriş yaptı tahmin URL, gerek yerleştirilmesi /WEB-INF klasör, gibi vardır, dosya ve şablon dosyasında yukarıdaki örnek. Ayrıca Bkz: 51**

Herhangi bir biçimlendirme (HTML kodu) <ui:composition> <ui:define> dışarıda olması gerekmez. Herhangi bir koyabilirsiniz, ama olacakgörmezden geldiFacelets. Orada biçimlendirme koyarak web tasarımcılar için faydalı olur. Ayrıca Is there a way to run a JSF page without building the whole project? bkz

HTML5 doctype doctype önerilen bu gün, "" XHTML dosyası olduğunu. rağmen. HTML çıktısı XML tabanlı bir araç kullanarak üretmek için izin veren bir dil olarak XHTML görmelisiniz. Ayrıca Is it possible to use JSF Facelets with HTML 4/5? ve JavaServer Faces 2.2 and HTML5 support, why is XHTML still being used bkz.

Yeniden JAR dosyası Facelets dosyaları koyabilirsiniz. Ayrıca Structure for multiple JSF projects with shared code bkz.

Gelişmiş Facelets canlı bir örneğin şablon oluşturma, OmniFaces showcase site source code 43 *klasörünüzü kontrol edin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • efaustus9

    efaustus9

    16 HAZİRAN 2006
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009