是否有'优雅'的方式让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事件,但不知道从哪里开始。
答案 0 :(得分:0)
经过大量的研究,我明白这是不可能的。 SWF架构不容易允许响应此类事件。您仍然可以在Ajax事件上调用bean方法,如果您将此修复程序放在适当位置,任何负责其部分呈现的Facelets组件都将正确响应Ajax事件:http://static.springsource.org/spring-webflow/docs/2.3.x/reference/html/ch13s10.html
另见我关于同一主题的另一个问题:Primefaces RowEditor does not work with Spring Webflow
任何与SWF相关的操作都必须由Primefaces RemoteCommand组件或类似(CommandButton等)调用