JSF2.2使用JSF:rendered属性有条件地呈现HTML5元素
我想使用HTML5语法在JSF2.2中实现一个新页面 我的问题是:如果jsf:rendered的计算结果为false,如何实现特定的HTML元素不会被呈现 样本:JSF2.2使用JSF:rendered属性有条件地呈现HTML5元素,html,jsf-2,jsf-2.2,Html,Jsf 2,Jsf 2.2,我想使用HTML5语法在JSF2.2中实现一个新页面 我的问题是:如果jsf:rendered的计算结果为false,如何实现特定的HTML元素不会被呈现 样本: <span class="msnumber" jsf:id="msnumber" jsf:rendered="#{!empty controller.msnumber}">[#{controller.msnumber}]</span> [#{controller.msnumber}] 我是否需要为此使用h:
<span class="msnumber" jsf:id="msnumber" jsf:rendered="#{!empty controller.msnumber}">[#{controller.msnumber}]</span>
[#{controller.msnumber}]
我是否需要为此使用h:outputText?如果我能直接使用HTML元素,我将不胜感激
问候
Marc直接在facelet中使用HTML语法没有什么错。如果要控制渲染与否,最好使用标记,标记本身不会渲染任何内容:
<ui:fragment rendered="#{!empty controller.msnumber}">
<span class="msnumber" id="msnumber">[#{controller.msnumber}]</span>
</ui:fragment>
[#{controller.msnumber}]
将使公正
<span class="msnumber" id="msnumber">xx</span>
xx
如果{!empty controller.msnumber}
计算为true
关于您想要实现它的方式,我不确定是否要直接将JSF组件特定的属性添加到HTML标记中(尽管这是可能的)。老实说,我从未见过这种情况。您使用
span
作为传递元素的方法肯定会起作用。我在我的一个JSF2.2项目中试用了它,它与MyFaces2.2.3和Mojarra 2.2.6的预期效果一样
你用MyFaces还是Mojara?哪个版本?尽量使用最新的。HTML5支持是非常新的,MyFaces和Mojarra的旧版本中也有bug
另一种可能是,您的EL表达式
{!empty controller.msnumber}
有问题,应该可以正常工作。你有表格吗?如何更新span
组件?显示所有相关代码。是的,这肯定会起作用。我在我的一个JSF2.2项目中试用了它,它按预期工作(使用MyFaces2.2.3和Mojarra 2.2.6)。您的JSF实现是什么?哪个版本?尽量使用最新的。HTML5支持非常新,MyFaces的旧版本中存在bug,Mojarra.JSF在版本2.2中引入了传递属性和元素来实现这一点。有关详细信息,请参阅我的博客帖子: