在 Facelets 中有条件地呈现纯 HTML 属性
Posted
技术标签:
【中文标题】在 Facelets 中有条件地呈现纯 HTML 属性【英文标题】:Conditionally render plain HTML attribute in Facelets 【发布时间】: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 <div>
元素的属性?
【问题讨论】:
我对 JSF 不够熟悉,但我知道你不能使用那种语法。没有嵌套标签之类的东西。现在here 是一个解释如何使用复合组件的问题;不知道它是否也适用于纯 HTML 元素。 【参考方案1】:你不需要那些 if 语句。如果值为空,则不会在页面上自动呈现属性。
【讨论】:
这完全是错误的,div 将具有空属性“data-test1-for”和“data-test2-for”。如果是布尔属性,那就有问题了!以上是关于在 Facelets 中有条件地呈现纯 HTML 属性的主要内容,如果未能解决你的问题,请参考以下文章
<!--[if IE]> 条件注释在 Facelets 中呈现 HTML 转义
如何在created()或mounted()中有条件地呈现JS