0

有没有一种“优雅”的方式让 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 事件,但不知道从哪里开始。

4

1 回答 1

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 等)调用

于 2012-11-28T19:46:24.120 回答