如何在SpringWebFlow中处理Primefaces:ajax事件

如何在SpringWebFlow中处理Primefaces:ajax事件,primefaces,spring-webflow,Primefaces,Spring Webflow,是否有一种“优雅”的方式让SWF响应Primefaces Ajax事件?例如: <p:dataTable id="myDT" value="#{myList}" var="listVal"> <p:ajax event="rowToggle" update="expandedText" /> <p:rowToggler> <h:outputText id="expandedText" value="#{listVal.someText}"/>

是否有一种“优雅”的方式让SWF响应Primefaces Ajax事件?例如:

<p:dataTable id="myDT" value="#{myList}" var="listVal">
<p:ajax event="rowToggle" update="expandedText" />  
<p:rowToggler>
<h:outputText id="expandedText" value="#{listVal.someText}"/>
</p:rowToggler>
</p:dataTable>

如果我能让它在我的视图中触发SWF操作并呈现适当的片段,那将是理想的:

<view-state id="myView" view="myview.xhtml">
<transition on="myDT:rowToggle"  to="showRowContents" >
<render fragments="expandedText"/>
</transition>

目前我知道的唯一解决方法是使用Ajax事件调用RemoteCommand:

<p:dataTable id="myDT" value="#{myList}" var="listVal">
<p:remoteCommand name="rowToggleCommand" action="rowToggle"  update="expandedText"/>
<p:ajax event="rowToggle" oncomplete="rowToggleCommand()" />  
<p:rowToggler>
<h:outputText id="expandedText" value="#{listVal.someText}"/>
</p:rowToggler>
</p:dataTable>


我发现这种解决方法有点难看,它还导致两个Ajax请求而不是一个。我相信有可能对SWF端进行修补,以响应此类Ajax事件,但不知道从何开始。

经过大量研究,我明白这是不可能的。SWF体系结构不容易响应此类事件。您仍然可以在Ajax事件上调用bean方法,如果您将此修复放置到位,任何负责其自身部分呈现的Facelets组件都将正确响应Ajax事件:

另见我关于同一主题的其他问题:

任何与SWF相关的操作都必须由Primefaces RemoteCommand组件或类似组件(CommandButton等)调用