Templates 如何检查是否定义了JSF内容?

Templates 如何检查是否定义了JSF内容?,templates,jsf,jakarta-ee,facelets,Templates,Jsf,Jakarta Ee,Facelets,我有这个模板: <tr> <td> <ui:insert name="content">Content</ui:insert> </td> <td class="rightpanel"> <ui:insert name="rightpanel">RP</ui:insert> </td> </tr> 我只想在模

我有这个模板:

<tr>
    <td>
        <ui:insert name="content">Content</ui:insert> 
    </td>
    <td class="rightpanel">
        <ui:insert name="rightpanel">RP</ui:insert> 
    </td>
</tr>
我只想在模板客户端定义了rightpanel内容的情况下呈现rightpanel单元格。

试试这个

模板:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html 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>
</h:head>

<h:body>
    <tr>
        <td>
            <ui:insert name="content">Content</ui:insert>
        </td>

            <ui:insert name="rightpanel"></ui:insert>

    </tr>
</h:body>
</html>
模板客户端

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:c="http://java.sun.com/jsp/jstl/core">

<h:body>
    <ui:composition template="./TestTemplate.xhtml">

        <ui:define name="content">
               ABCDEF
            </ui:define>
        <ui:define name="rightpanel">
            <h:outputText escape="false" value="<td> ABCD </td>">
            </h:outputText>
        </ui:define>
    </ui:composition>
</h:body>
</html>
我只是使用转义字符来呈现数据。试试看:

试试这个

模板:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html 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>
</h:head>

<h:body>
    <tr>
        <td>
            <ui:insert name="content">Content</ui:insert>
        </td>

            <ui:insert name="rightpanel"></ui:insert>

    </tr>
</h:body>
</html>
模板客户端

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:c="http://java.sun.com/jsp/jstl/core">

<h:body>
    <ui:composition template="./TestTemplate.xhtml">

        <ui:define name="content">
               ABCDEF
            </ui:define>
        <ui:define name="rightpanel">
            <h:outputText escape="false" value="<td> ABCD </td>">
            </h:outputText>
        </ui:define>
    </ui:composition>
</h:body>
</html>

我只是使用转义字符来呈现数据。试试看:

保持空白即可。如果模板客户端中定义了某些内容,那么它将替换它,否则它将是空白的或空白页面。但如果ui的内容是空白的,我不希望呈现整个内容。如果您希望该内容是动态的,请不要将其放在模板中。在模板客户端中定义它。我知道这是一个老问题,但如果有人到了这里,请看,我在那里找到了更好的解决方案,因为@neni答案在我看来像是一个解决方法。请保持空白。如果模板客户端中定义了某些内容,那么它将替换它,否则它将是空白的或空白页面。但如果ui的内容是空白的,我不希望呈现整个内容。如果您希望该内容是动态的,请不要将其放在模板中。在模板客户端中定义它。我知道这是一个老问题,但如果有人到了这里,请看,我在那里找到了一个更好的解决方案,因为@neni答案在我看来像是一个解决办法。