Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2.2使用JSF:rendered属性有条件地呈现HTML5元素_Html_Jsf 2_Jsf 2.2 - Fatal编程技术网

JSF2.2使用JSF:rendered属性有条件地呈现HTML5元素

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:

我想使用HTML5语法在JSF2.2中实现一个新页面

我的问题是:如果jsf:rendered的计算结果为false,如何实现特定的HTML元素不会被呈现

样本:

<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中引入了传递属性和元素来实现这一点。有关详细信息,请参阅我的博客帖子: