2013-10-04 77 views
0

我具有其上顯示在數據表中的產品的列表,並希望下面的dataTable-popupPanel主詳細不保存編輯的值

一個DataTable如所描述的在一個彈出到編輯從數據表中的特定行與所有員工的詳細信息一樣,每一行都有編輯按鈕。單擊編輯按鈕時,新彈出窗口應顯示特定點擊產品的現有信息,編輯後必須反映該列表中特定對象的更改以及在數據表中。

我很努力,但我無法保存編輯過的產品中的更改。當彈出窗口打開時,l可以看到所選的項目屬性,但當我更改屬性時,沒有任何更改。 這裏是我的jsf代碼。

<a4j:outputPanel ajaxRendered="true"> 
    <h:dataTable id="table1" value="#{productBean.products}" var="item" 
     styleClass="resultTable" headerClass="resultTableHeader" 
     rowClasses="resultTableRow"> 
     <h:column> 
      <f:facet name="header"> 
       <h:outputText value="Part#" /> 
      </f:facet> 
      <h:outputText value="#{item.partNumber}" /> 
     </h:column> 

     <h:column> 
      <f:facet name="header"> 
       <h:outputText value="Product Description" /> 
      </f:facet> 
      <h:outputText value="#{item.description}" /> 
     </h:column> 
     <h:column> 
     <a4j:commandButton value="Edit" action="#{productBean.setEditItem(item)}" oncomplete="#{rich:component('popup')}.show()"> </a4j:commandButton> 

        <rich:popupPanel id="popup" modal="true" resizeable="true" 
       onmaskclick="#{rich:component('popup')}.hide()"> 
       <f:facet name="header"> 
        <h:outputText value="Edit property of the product" /> 
       </f:facet> 
       <f:facet name="controls"> 
        <h:outputLink value="#" 
         onclick="#{rich:component('popup')}.hide(); return false;"> 
         X 
        </h:outputLink> 
       </f:facet> 
       <!-- editProduct ı burda item yerine kullan -->      
       <table style="align: center;"> 
        <tr> 
         <td><h:panelGrid columns="2"> 
           <h:outputText value="Description"></h:outputText> 
           <h:inputText value="#{productBean.item.description}"></h:inputText> 
          </h:panelGrid></td> 
        </tr> 
        <tr> 
         <td><h:panelGrid columns="2"> 
           <h:outputText value="Part Number"></h:outputText> 
           <h:inputText value="#{item.partNumber}"></h:inputText> 
          </h:panelGrid></td> 
        </tr> 
       </table> 
        <a4j:commandButton value="Submit" action="#{productBean.actionEditProductsFromDatabase(item)}" execute="@popup"/> 
        <a4j:commandButton value="Cancel" onclick="#{rich:component('editPane')}.hide(); return false;" /> 
      </rich:popupPanel> 
     </h:column> 
    </h:dataTable> 

</a4j:outputPanel> 

</h:form> 

回答

1

參考放置標註在RichFaces的組件參考:

http://docs.jboss.org/richfaces/latest_4_X/Component_Reference/en-US/html_single/#sect-Component_Reference-Panels-richpopupPanel

<rich:popupPanel>組分在在任何 其它對象的前面通常呈現頁。這通過將組件 附加到頁面的<body>元素並設置非常高的「z-索引」 (對象的堆棧順序)來實現。因爲 相對位置的元素仍然可以與彈出式面板重疊(如果 它們存在於DOM層次結構的較高級別,即使它們的 z-index小於<rich:popupPanel>組件也會採用此方法。

如果<rich:popupPanel>是參與提交兒 組件/行爲,那麼表單元素必須嵌套內 <rich:popupPanel>。或者,如果不存在重疊元素,則 <rich:popupPanel>組件可以通過重新附加到其原始DOM 元素,將domElementAttachment設置爲父代或