ui:将Facelets升级到JSF 2后,片段呈现属性不起作用
我正在用内置的facelets将一个项目从JSF1.2/Facelets1.1升级到JSF2.1。以下内容不再有效,我不知道为什么。显然,两个ui:fragments的计算结果均为true,并且呈现链接版本和纯文本版本:ui:将Facelets升级到JSF 2后,片段呈现属性不起作用,jsf,jsf-2,facelets,fragment,Jsf,Jsf 2,Facelets,Fragment,我正在用内置的facelets将一个项目从JSF1.2/Facelets1.1升级到JSF2.1。以下内容不再有效,我不知道为什么。显然,两个ui:fragments的计算结果均为true,并且呈现链接版本和纯文本版本: <ui:fragment rendered="#{rootcauseid ne rc.id}"> <a href="#{request.contextPath}/viewrootcause.jsf?rootcausenum=#{rc.id}">R
<ui:fragment rendered="#{rootcauseid ne rc.id}">
<a href="#{request.contextPath}/viewrootcause.jsf?rootcausenum=#{rc.id}">Root Cause #{rcRowCounter + 1}</a>
</ui:fragment>
<ui:fragment rendered="#{rootcauseid eq rc.id}">
<h:outputText value="Root Cause #{rcRowCounter + 1}"/>
</ui:fragment>
以下方法确实有效,因此我有一个有效的解决方法
<h:panelGroup rendered="#{rootcauseid ne rc.id}">
<a href="#{request.contextPath}/viewrootcause.jsf?rootcausenum=#{rc.id}">Root Cause #{rcRowCounter + 1}</a>
</h:panelGroup>
<h:outputText value="Root Cause #{rcRowCounter + 1}"
rendered="#{rootcauseid eq rc.id}"/>
但是为什么ui:fragment版本不能工作呢?Facelets和JSF发生了什么变化,这将带来不同?“ui:fragment rendered='…'”不再是一个有效的习惯用法吗?根据规范,ui:fragment只有id和绑定属性。据我所知,它应该可以正常工作。尝试调试渲染结果的计算。如何为ui前缀声明命名空间?ui前缀定义为:xmlns:ui=”“这不是真的。这是一个纪录片错误。它一直存在于Facelets中,但自JSF2.1以来,它只在标记文档中被修复。另请参见具体问题是由JSF2.1中的
标记的生命周期的变化引起的,与Facelets 1.x和2.0.BalusC相反,这是一个非常好的信息。如果您在中有关于生命周期更改的更多信息,并将其作为答案发布,我将很高兴地“接受”该响应。