【问题标题】:How to display a html tag if JSF conditon is true?如果 JSF 条件为真,如何显示 html 标签?
【发布时间】:2013-08-14 22:10:11
【问题描述】:

如果 backing-bean 的值 NOT 为空,我想显示 <span>Lorem Ipsum</span>

<h:outputText rendered="#{not empty pubController.location}">
    <span>Lorem Ipsum</span>
</h:outputText>

Lorem Ipsum 永远不会显示。显然,如果我在我的情况下删除 NOT,它也不起作用。

仅供参考:在运行 h:outputText 之前,我只是打印布尔语句。它打印的正是我所期望的。对于非空值为真。此外,渲染条件也适用于我所期望的 h:form 标记。看起来 h:outputText 在这种情况下不合适,是吗?

有没有比使用 h:outputText 更好的方法来做我想做的事情?

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    这不起作用,因为h:outputText 不接受documentation 中所述的子元素:

    如果此元素有子元素,则默认情况下必须忽略它们。 实现可能会提供一个配置选项,允许这样做 渲染其子元素的元素。

    尝试使用以下代码应该可以解决您的问题:

    <h:outputText value="Lorem Ipsum" rendered="#{not empty pubController.location}"/>
    

    请注意,您还可以执行以下操作:

    <h:panelGroup rendered="#{not empty pubController.location}">
        <span>Lorem Ipsum</span>
    </h:panelGroup>
    

    如果您需要显示比简单的span 元素更复杂的结构,这将非常有用。

    【讨论】:

    • 是的,你是替代作品,因为它也考虑了 span 标签。伟大的。谢谢。
    • 如果没有指定客户端属性,&lt;h:outputText&gt; 不会生成任何 &lt;span&gt;。你似乎在期待其他情况。
    • 您必须执行&lt;span&gt;&lt;h:outputText ... /&gt;&lt;/span&gt; 才能生成&lt;span&gt;
    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多