【问题标题】:Conditionally render plain HTML attribute in Facelets在 Facelets 中有条件地呈现纯 HTML 属性
【发布时间】:2015-05-26 06:43:12
【问题描述】:

我想有条件地呈现纯 HTML <div> 元素的属性。我尝试如下使用<c:if>:

<ui:composition
        xmlns:ui="http://java.sun.com/jsf/facelets" 
        xmlns:c="http://java.sun.com/jstl/core"
        xmlns:f="http://java.sun.com/jsf/core" 
        xmlns:h="http://java.sun.com/jsf/html">        

    <div data-product-id="#{ID}" 
        <c:if test="${not empty testvalue1}">
            data-test1-for="#{testvalue1}"
        </c:if>
        <c:if test="${not empty testvalue2}">
            data-test2-for="#{testvalue1}"
        </c:if>
    >
        div content
    </div>
</ui:composition>

但是,它产生了一个 Facelet 异常:

com.sun.facelets.FaceletException: Error Parsing /assets/template/module/container/product/product-marker.xhtml: Error Traced[line: 9] 元素类型“div”必须后跟任一属性规范, ">" 或 "/>"

如何有条件地呈现纯 HTML &lt;div&gt; 元素的属性?

【问题讨论】:

  • 我对 JSF 不够熟悉,但我知道你不能使用那种语法。没有嵌套标签之类的东西。现在here 是一个解释如何使用复合组件的问题;不知道它是否也适用于纯 HTML 元素。

标签: html jsf attributes facelets conditional-rendering


【解决方案1】:

你不需要那些 if 语句。如果值为空,则不会在页面上自动呈现属性。

【讨论】:

  • 这完全是错误的,div 将具有空属性“data-test1-for”和“data-test2-for”。如果是布尔属性,那就有问题了!
猜你喜欢
  • 2015-04-05
  • 2023-04-07
  • 2016-06-18
  • 1970-01-01
  • 2017-10-01
  • 2019-10-28
  • 2021-02-28
  • 2022-01-20
相关资源
最近更新 更多