Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何有条件地在HTML元素中封装某些内容_Html_Jsf_Jstl_Trinidad_Conditional Rendering - Fatal编程技术网

如何有条件地在HTML元素中封装某些内容

如何有条件地在HTML元素中封装某些内容,html,jsf,jstl,trinidad,conditional-rendering,Html,Jsf,Jstl,Trinidad,Conditional Rendering,在使用JSF、JSTL和Trinidad创建的页面上,我使用许多属性调用了一些标记 <tr:selectBooleanRadio group="#{groupId}" id="#{groupId}_#{Id}_radio" selected="#{value.yesterday}" text="#{msg.ib_selectTimeIntervalRadio_yesterday_label}" shortDes

在使用JSF、JSTL和Trinidad创建的页面上,我使用许多属性调用了一些标记

<tr:selectBooleanRadio
        group="#{groupId}"
        id="#{groupId}_#{Id}_radio"
        selected="#{value.yesterday}"
        text="#{msg.ib_selectTimeIntervalRadio_yesterday_label}"
        shortDesc="#{ib:fn_coalesce(title,label)}"
        simple="#{ib:fn_coalesce(simple,true)}"
        styleClass="#{ib:fn_coalesce(styleClass,'selectTimeIntervalRadio')}"/>

我想在
元素中显示它,或者直接、有条件地显示它。现在我这样做:

<c:when test="#{not horizontal}">
    <tr>
        <td>
            <tr....>
        </td>
    </tr>
</c:when>
<c:when test="#{horizontal}">
    <tr...>
</c:when>

这样,我重复同一段代码两次,这显然是不好的。我能做什么

总之,为tr创建一个新的自定义组件是没有用的。。。打电话——打电话也会有同样的问题

也许,我可以有条件地将一个标签封装在另一个标签中?我可以吗

另一种方式可能是这样的:把tr。。。标记某种类型的变量,并在使用此变量构造时使用相同的变量。也许,这是可能的


您知道如何避免这种代码重复的另一种方法吗?

如果您使用的是传统JSP,请将其包装在

<h:outputText value="&lt;tr&gt;&lt;td&gt;" escape="false" rendered="#{not horizontal}" />
    <tr:selectBooleanRadio ... />
<h:outputText value="&lt;/td&gt;&lt;/tr&gt;" escape="false" rendered="#{not horizontal}" />

如果您使用的是JSPX或Facelets,这将在上述构造上产生XML错误,这在XML中是非法的,请在
中对其进行转义

<h:outputText value="&lt;tr&gt;&lt;td&gt;" escape="false" rendered="#{not horizontal}" />
    <tr:selectBooleanRadio ... />
<h:outputText value="&lt;/td&gt;&lt;/tr&gt;" escape="false" rendered="#{not horizontal}" />


最后我需要声明xmlns:h=”“。看起来很脏。第一种变体更具同情心,请问我对f:有什么看法?正如我所回答的,它在Facelets中不起作用。顺便说一句,它只是标准的核心标记,自JSF 2.0以来才被弃用。我已经检查过:-(。还有其他更干净的解决方案吗?像条件下的元素中的信封?它违反了XML规则(文档必须格式正确)唯一干净的替代品是带有渲染器的自定义组件。但这违反了更基本的不复制规则。