0

我有带有单元内编辑的 Primefaces DataTable:

        <p:dataTable id="docsTable" editable="true" value="#{customer.docs}" var="doc" style="border-width:0px;" >

            <p:growl id="docsMessages" showDetail="true"></p:growl>

            <p:ajax event="rowEdit" update="docsMessages,docsTable" listener="#{customerController.onEditDocument}"></p:ajax>
            <p:ajax event="rowEditCancel" update="docsMessages,docsTable" listener="#{customerController.onEditDocumentCancel}"></p:ajax>

            <p:column headerText="Document Type">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{doc.docType}"></h:outputText>
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{doc.docType}"></p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Document Number">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{doc.docNum}"></h:outputText>
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{doc.docNum}"></p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column>
                <p:rowEditor></p:rowEditor>
            </p:column>
        </p:dataTable>

下面是对应的 SWF 视图状态定义:

<view-state id="enterDetails" view="/WEB-INF/views/tiles/customer/s3-custDetails.xhtml" model="customer"> <!-- tiles/customer/s3-custDetail -->
    <secured attributes="ROLE_WEB" />
    <var name="customerController" class="com.my.CustomerController"/>
    <transition on="addNewDocument">
        <evaluate expression="customer.docs.add(new com.my.CustomersDocs())"></evaluate>
        <render fragments="custDetails"></render>
    </transition>
</view-state>

视图渲染良好,值保存在支持 bean 中,并且在我的控制器中也调用了 rowEdit 侦听器。但是,无论用户做什么,它都不会退出编辑器模式。我做了一些网络嗅探,似乎 SWF 只发回了视图状态,而 Primefaces 展示也发回了渲染片段。

我该如何解决?

4

1 回答 1

0

这是 Spring webflow 中的一个错误/缺陷。它在 Spring 文档中被提及(参见http://static.springsource.org/spring-webflow/docs/2.3.x/reference/html/ch13s10.html),但以一种相当晦涩的方式,并没有提到与部分渲染的关系问题。修复很简单,在 webflow:flow-executor 标签中添加以下内容:

        <webflow:flow-execution-attributes>
            <webflow:redirect-in-same-state value="false"/>
        </webflow:flow-execution-attributes>
于 2012-11-28T19:41:57.007 回答