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