Пользовательский тег JSP с телом JSF - PullRequest
1 голос
/ 17 марта 2011

Я пытаюсь создать собственный механизм шаблонов для сайта. Я сделал 2 пользовательских тега с именами «TemplateInsert» и «TemplateFor», один из которых будет использоваться так:

<prefix:insert templateFile="someFile>
    <prefix:for name="body">
        some content here
    </prefix:for>

    other prefix:for tags...

</prefix:insert>

это прекрасно работает, если внутри вашего "контента" нет тегов JSF. Сервер, кажется, не анализирует их. Кто-нибудь знает, как я могу это исправить?

ура!

1 Ответ

1 голос
/ 17 марта 2011

Это одна из множества причин, по которым Facelet сменил JSP в соответствии с JSF 2.0 / Java EE 6. JSP предлагает очень мало шаблонизаторов. Однако вы можете использовать Facelets 1.x на JSF 1.x, если вы устанавливаете его отдельно согласно их docbook .

Facelets предлагает именно ваши функциональные требования уже из коробки. Пример:

template.xhtml

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <head>
        <title><ui:insert name="title" /></title>
    </head>
    <body>
        <ui:insert name="body" />
    </body>  
</html>

page.xhtml

<ui:composition template="template.xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <ui:define name="title">Page title</ui:define>
    <ui:define name="body">
        <h:outputText value="JSF tags just work here." />
    </ui:define>
</ui:composition>

Я бы сказал, перейдите на Facelets в качестве технологии просмотра JSF вместо того, чтобы заново изобретать технологию, основанную на JSP.

...