我想使用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元素,我将不胜感激。
电贺 马克
答案 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)。老实说,我从来没有见过。