Как установить определение внутри другого определения - PullRequest
3 голосов
/ 15 января 2010

Я занимаюсь разработкой веб-приложения на jboss, seam, richfaces.

Я использую шаблон (xhtml) в качестве главной страницы для всех остальных, и там я установил два тега вставки. <ui:insert name="head"/> <ui:insert name="body"/>

Проблема в том, что на страницах, которые используют эту главную страницу в качестве шаблона, <ui:define name="head">...</ui:define> должен быть определен внутри <ui:define name="body">...</ui:define>.

Как я могу это сделать?

По сути, я хочу сделать следующее:

<ui:define name="body">... <ui:define name="head"> <meta name="title" content="#{something.title}" /> </ui:define> ...</ui:define>

главная страница должна вернуть: <meta name="title" content="#{something.title}" /> на <ui:insert name="head"/>

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Я не думаю, что Facelets работают так. Компилирует и читает шаблон.

Так что я думаю, что вы можете просто определить, сколько определений вы хотите, и вам нет дела до вложенности.

есть:

//In your template.xhtml
<ui:insert name="outer">
    BLA BLA BLA
    <ui:insert name="inner"/>
    BLA BLA BLA
</ui:insert>

А когда вы хотите использовать этот шаблон просто:

 <ui:define name="outer">
    Here you can overwrite outer (This will probably overwrite inner, not sure, you need to test it)
 </ui:define>

 <ui:define name="inner">
    Or you can ONLY overwrite inner here if you want
 </ui:define>
0 голосов
/ 18 января 2010

Вы можете использовать <ui:param> для определения content на каждой странице. Например

в шаблоне:

<meta name="title" content="#{titleParam}" />

на странице, которая использует шаблон:

<ui:param name="titleParam" value="customValueForThisPage" />
...