2012-11-16 35 views
0

工作,我有Primefaces数据表与单元格编辑:Primefaces RowEditor不使用Spring Webflow的

 <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 showcase也发回了渲染片段。

我该如何解决这个问题?

回答

1

这是Spring webflow中的缺陷/缺陷。它在Spring文档中提到(请参阅http://static.springsource.org/spring-webflow/docs/2.3.x/reference/html/ch13s10.html),但以相当模糊的方式提及,并未提及与部分呈现问题的关系。修复很简单,在webflow中添加以下内容:流程执行器标记:

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