templates - 如何将可选的 Facelet 模板内容包装在 div 标签中?

标签 templates jsf-2 facelets

我是 JSP 的长期用户,但 Facelets 是新手,并且一直坚持我认为非常简单的任务。

如何将可选模板内容包装在 div 标签中?

例如,给出以下简化模板:

<?xml version='1.0' encoding='UTF-8' ?>
<html xml:lang="en" lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <!-- head stuff here -->
    </h:head>

    <h:body>
        <!-- main body stuff here -->
        <div class="border-box">
            <ui:insert name="optional" />
        </div>
    </h:body>

</html>

如果我使用此模板而不定义可选内容,我将得到一个不需要的空框。

我搜索了解决方案,发现同样的问题出现了几次,但没有真正的答案。

谁能帮帮我吗?在我看来,使用模板系统来做这件事是相当合理的,但它让我难住了。

最佳答案

谢谢 mael,当内容适合 ui:param 值属性时, ui:fragment 似乎是可行的方法,但我同意你的第一个建议。我将使用 ui:decorate 对包装器进行模板化。

页面模板:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <!-- head stuff here -->
    </h:head>

    <h:body>
        <!-- main body stuff here -->
        <ui:insert name="optional" />
    </h:body>

</html>

包装模板:

<?xml version='1.0' encoding='UTF-8' ?>
<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <div class="border-box">
        <ui:insert />
    </div>

</ui:composition>

调用:

<?xml version='1.0' encoding='UTF-8' ?>
<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    template="page.xhtml">

    <!-- other ui:defines -->

    <ui:define name="optional">
        <ui:decorate template="wrapper.xhtml">
            <!-- optional content -->
        </ui:decorate>
    </ui:define>

</ui:composition>

关于templates - 如何将可选的 Facelet 模板内容包装在 div 标签中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692748/

相关文章:

java - Ajax Facelets 支持的 "events"是什么?

javascript - window.location.href 不渲染 Facelets 页面,返回原始源代码

c++ - 具有不同参数但相同代码的模板类方法

redirect - 用户登录后如何重定向回用户想要访问的页面?

javascript - OutputScript 不加载我的 JavaScript 源

tomcat - Maven tomcat :run goal and jsf annotation based component/converter/validator scanning

jsf - 我如何定位 h :message to the right of a h:inputText?

javascript - 在 javascript 中使用 handlebars 模板变量

node.js - Jade ,gulp-jade本地人更新

vector 中带有模板的 C++ 结构