JSF 2.2使用jsf:rendered属性有条件地呈现HTML5元素

时间:2014-06-17 09:15:27

标签: html html5 jsf-2 jsf-2.2

我想使用HTML5语法在JSF 2.2中实现一个新页面。

我的问题:如果jsf:rendering的计算结果为false,我怎样才能实现不呈现特定的HTML元素?

样品:

<span class="msnumber" jsf:id="msnumber" jsf:rendered="#{!empty controller.msnumber}">[#{controller.msnumber}]</span>

我是否需要为此目的使用h:outputText?如果我可以直接使用HTML元素,我将不胜感激。

电贺 马克

2 个答案:

答案 0 :(得分:1)

使用span作为传递元素的方法绝对可行。我在我的一个JSF 2.2项目中尝试过,它与MyFaces 2.2.3和Mojarra 2.2.6一起工作。

你使用MyFaces还是Mojarra?哪个版本?尝试使用最新的一个。 HTML5支持非常新,MyFaces和Mojarra的旧版本存在漏洞。

另一种可能性是,您的EL表达式#{!empty controller.msnumber}出现了问题。

答案 1 :(得分:0)

直接在facelets中使用HTML语法没有错。如果您想控制它的呈现与否,最好使用<ui:fragment />标记,它不能自行呈现任何内容:

<ui:fragment rendered="#{!empty controller.msnumber}">
    <span class="msnumber" id="msnumber">[#{controller.msnumber}]</span>
</ui:fragment>

将呈现

<span class="msnumber" id="msnumber">xx</span>

如果#{!empty controller.msnumber}评估为true

关于您希望实现它的方式,我不确定是否直接向HTML标记添加JSF组件特定属性(尽管可能the other way)。老实说,我从来没有见过。