这是我的标记:
<h:commandLink value="#{partial}" action="#{hello.setCurrentPartial(partial)}">
<f:ajax render="include" listener="#{hello.renderFragments}"/>
</h:commandLink>
我尝试在Mojarra-2.2.8(wildfly 8.2.0.Final内置)和MyFaces-2.2.7(按照这里的指导安装)中运行此页面。令人惊讶的是,当点击链接时,mojarra首先调用hello.renderFragments
然后调用hello.setCurrentPartial
,但是MyFaces采取相反的顺序,即首先调用hello.setCurrentPartial
。
因此,我的问题是是否有JSF规范中操作和Ajax监听器调用顺序的定义。如果已定义顺序,则哪个实现是正确的?
<f:ajax listener>
移动到<h:commandLink actionListener>
中。我会向JSF规范团队询问这种差异。 - BalusC