Primefaces RowEditor不适用于Spring Webflow

时间:2012-11-16 18:18:18

标签: primefaces facelets spring-webflow spring-webflow-2

我有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只发回了viewstate,而Primefaces showcase也发回了渲染的片段。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

        <webflow:flow-execution-attributes>
            <webflow:redirect-in-same-state value="false"/>
        </webflow:flow-execution-attributes>