1

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

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

    other prefix:for tags...

</prefix:insert>

除非您的“内容”中有 JSF 标记,否则此方法非常有效。服务器似乎没有解析它们。有谁知道我该如何解决这个问题?

干杯!

4

1 回答 1

1

这就是为什么 JSP 根据 JSF 2.0 / Java EE 6 被 Facelets 成功的众多原因之一。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 的技术。

于 2011-03-16T22:33:19.010 回答