h:outputText有条件地呈现JSF元素组不再在JSF2中工作?

h:outputText有条件地呈现JSF元素组不再在JSF2中工作?,jsf,jsf-2,rendered-attribute,Jsf,Jsf 2,Rendered Attribute,我有一些代码使用有条件地呈现JSF元素组。示例: <h:outputText rendered="#{authorization.admin}"> <h:outputText value="#{msgs.someinfo}" /> <h:inputSecret value="#{usermanager.password}" /> </h:outputText> 我正在尝试转移到GlassFish4,它有一些JSF2或更高版本 此构造的所有

我有一些代码使用
有条件地呈现JSF元素组。示例:

<h:outputText rendered="#{authorization.admin}">
  <h:outputText value="#{msgs.someinfo}" />
  <h:inputSecret value="#{usermanager.password}" />
</h:outputText>
我正在尝试转移到GlassFish4,它有一些JSF2或更高版本


此构造的所有数百个实例都适用于旧的glassfish,但它们不再适用于新的glassfish-它们将被替换为零,而不管
呈现的
属性的计算结果如何。为什么?

事实上,自JSF2.0以来,
UIInput
UIOutput
的子级默认不再呈现。这是修复的结果。在Mojarra 2.x中,您仍然可以通过
web.xml
上下文参数将其重新打开:

<context-param>
    <param-name>com.sun.faces.allowTextChildren</param-name>
    <param-name>true</param-name>
</context-param>

com.sun.faces.allowTextChildren
真的
另见


但是,更建议使用
对块进行有条件渲染,因为
是错误的工具™ 为了这份工作

当然,您不应该使用
来包装您想要呈现或不想要呈现的内容。改用
。有关更多选项,请参阅。@Luigimendoza:但该构造似乎没有争议,我不明白您的意思。@Luigimendoza:
在那里也是以同样的方式使用的,没有人说过不这样做。然后看起来像
{authorization.admin}
总是返回
false
(与其他bean类似)。没有足够的信息来重现这个问题。我建议创建一个新页面,并尝试将其隔离,以找到真正的罪魁祸首。顺便说一下,GlassFish 4默认使用JSF 2.2。我不能使用
,因为它在HTML中创建了
,这会改变web浏览器的行为。帖子说
不支持
呈现的
属性?到目前为止,我已经开始将
转换为
,它正在工作。
不会创建
,只要您不指定应该在客户端结束的属性。至于
,它当然支持
呈现的
属性,请重新阅读那篇文章。这只是一个文档错误,而不是逻辑错误。
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_19-b02 (Sun Microsystems Inc.)
Specification-Title: JavaServer Faces
Specification-Version: 1.2MR2
Implementation-Title: Mojarra
Implementation-Version: 1.2_13-b01-FCS
Implementation-Vendor: Sun Microsystems, Inc.
Implementation-Vendor-Id: com.sun
Extension-Name: com.sun.faces
<context-param>
    <param-name>com.sun.faces.allowTextChildren</param-name>
    <param-name>true</param-name>
</context-param>