带有JSF主体的JSP Custom标签

时间:2011-03-16 22:26:43

标签: java jsp jsf tomcat custom-tags

我想为网站创建自己的模板机制。我已经制作了2个名为“TemplateInsert”和“TemplateFor”的自定义标签,可以像这样使用它们:

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

    other prefix:for tags...

</prefix:insert>

除非“内容”中包含JSF标记,否则这种方式非常有效。服务器似乎没有解析它们。有谁知道我怎么解决这个问题?

喝彩!

1 个答案:

答案 0 :(得分:1)

这是根据JSF 2.0 / Java EE 6使Facelets成功运行JSP的众多原因之一.JSP提供的模板功能非常少。但是,如果按照docbook单独安装,可以在JSF 1.x上使用Facelets 1.x.

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的技术。