1. Primefaces: commandButton in confirmDialog cannot update datatable in the same form
  2. public void delete(ActionEvent actionEvent) {
  3. categoryRepository.delete(currentCategory);
  4. currentCategory = new Category();
  5. categoryList = categoryRepository.findAll();
  6. }
  7.  
  8. <h:form id="categoryForm">
  9. <p:commandButton id="addCategoryButton" value="New"
  10. onclick="categoryDialog.show();" type="button" />
  11.  
  12. <p:dataTable var="cat" value="#{categoryBean.categoryList}"
  13. rowKey="#{cat.id}" paginator="true" rows="10"
  14. selection="#{categoryBean.selectedCategories}" id="categoryTable"
  15. widgetVar="categoryTable">
  16.  
  17. <f:facet name="header">
  18. Category List
  19. </f:facet>
  20. <p:column selectionMode="multiple" />
  21. <p:column headerText="Name" sortBy="#{cat.name}"
  22. filterBy="#{cat.name}" id="name">
  23. #{cat.name[categoryBean.currentLocale.language]}
  24. </p:column>
  25. <p:column headerText="Sort Order" sortBy="#{cat.sortOrder}"
  26. filterBy="#{cat.sortOrder}" id="sortOrder">
  27. #{cat.sortOrder}
  28. </p:column>
  29. <p:column headerText="Actions" id="actions">
  30. <h:commandButton action="#{categoryBean.edit(cat)}" value="Edit" />
  31.  
  32. <h:commandButton value="Delete"
  33. onclick="deleteConfirmation.show()" type="button">
  34. <f:setPropertyActionListener value="#{cat}"
  35. target="#{categoryBean.currentCategory}" />
  36. </h:commandButton>
  37.  
  38. </p:column>
  39.  
  40. </p:dataTable>
  41. <p:confirmDialog id="deleteConfirmDialog" message="Are you sure?"
  42. header="Initiating destroy process" severity="alert"
  43. widgetVar="deleteConfirmation">
  44.  
  45. <p:commandButton id="confirm" value="Yes Sure"
  46. update=":categoryForm:categoryTable"
  47. oncomplete="deleteConfirmation.hide()"
  48. actionListener="#{categoryBean.delete}" />
  49. <p:commandButton id="decline" value="Not Yet"
  50. onclick="deleteConfirmation.hide()" type="button" />
  51. </p:confirmDialog>
  52.  
  53. <p:dialog id="categoryDialog" header="Category Detail"
  54. widgetVar="categoryDialog" resizable="false" style="width:90%;"
  55. showEffect="explode" hideEffect="explode">
  56. <p:panel id="panel" header="Edit Category"
  57. style="margin-bottom:10px;">
  58. <p:messages id="messages" />
  59. <h:panelGrid columns="3">
  60. <h:outputLabel for="nameTabView" value="Name: " />
  61. <p:tabView id="nameTabView">
  62. <c:forEach var="locale" items="#{categoryBean.userLocales}">
  63. <p:tab title="#{locale.displayLanguage}">
  64. <h:panelGrid columns="2" cellpadding="10">
  65. <h:inputText
  66. value="#{categoryBean.currentCategory.name[locale.language]}" />
  67. </h:panelGrid>
  68. </p:tab>
  69. </c:forEach>
  70. </p:tabView>
  71. </h:panelGrid>
  72. <p:commandButton id="saveCategoryButton" value="Save"
  73. oncomplete="categoryDialog.hide()"
  74. actionListener="#{categoryBean.save}"
  75. update="categoryTable, categoryDialog" />
  76. </p:panel>
  77.  
  78. </p:dialog>
  79. </h:form>
  80.  
  81. <h:form id="categoryForm">
  82. <p:commandButton id="addCategoryButton" value="New"
  83. onclick="categoryDialog.show();" type="button" />
  84.  
  85. <p:dataTable var="cat" value="#{categoryBean.categoryList}"
  86. rowKey="#{cat.id}" paginator="true" rows="10"
  87. selection="#{categoryBean.selectedCategories}" id="categoryTable"
  88. widgetVar="categoryTable">
  89.  
  90. <f:facet name="header">
  91. Category List
  92. </f:facet>
  93. <p:column selectionMode="multiple" />
  94. <p:column headerText="Name" sortBy="#{cat.name}"
  95. filterBy="#{cat.name}" id="name">
  96. #{cat.name[categoryBean.currentLocale.language]}
  97. </p:column>
  98. <p:column headerText="Sort Order" sortBy="#{cat.sortOrder}"
  99. filterBy="#{cat.sortOrder}" id="sortOrder">
  100. #{cat.sortOrder}
  101. </p:column>
  102. <p:column headerText="Actions" id="actions">
  103. <p:panelGrid columns="2" styleClass="actions" cellpadding="2">
  104. <p:commandButton action="#{categoryBean.edit(cat)}" value="Edit" />
  105. <p:commandButton value="Delete"
  106. onclick="deleteConfirmation.show()">
  107. <f:setPropertyActionListener value="#{cat}"
  108. target="#{categoryBean.currentCategory}" />
  109. </p:commandButton>
  110. </p:panelGrid>
  111. </p:column>
  112.  
  113. </p:dataTable>
  114. <p:confirmDialog id="deleteConfirmDialog" message="Are you sure?"
  115. header="Initiating destroy process" severity="alert"
  116. widgetVar="deleteConfirmation">
  117.  
  118. <p:commandButton id="confirm" value="Yes Sure"
  119. update=":categoryForm:categoryTable"
  120. oncomplete="deleteConfirmation.hide()"
  121. actionListener="#{categoryBean.delete}" />
  122. <p:commandButton id="decline" value="Not Yet"
  123. onclick="deleteConfirmation.hide()" type="button" />
  124. </p:confirmDialog>
  125.  
  126. <p:dialog id="categoryDialog" header="Category Detail"
  127. widgetVar="categoryDialog" resizable="false" style="width:90%;"
  128. showEffect="explode" hideEffect="explode">
  129. <p:panel id="panel" header="Edit Category"
  130. style="margin-bottom:10px;">
  131. <p:messages id="messages" />
  132. <h:panelGrid columns="3">
  133. <h:outputLabel for="nameTabView" value="Name: " />
  134. <p:tabView id="nameTabView">
  135. <c:forEach var="locale" items="#{categoryBean.userLocales}">
  136. <p:tab title="#{locale.displayLanguage}">
  137. <h:panelGrid columns="2" cellpadding="10">
  138. <h:inputText
  139. value="#{categoryBean.currentCategory.name[locale.language]}" />
  140. </h:panelGrid>
  141. </p:tab>
  142. </c:forEach>
  143. </p:tabView>
  144. </h:panelGrid>
  145. <p:commandButton id="saveCategoryButton" value="Save"
  146. oncomplete="categoryDialog.hide()"
  147. actionListener="#{categoryBean.save}"
  148. update="categoryTable, categoryDialog" />
  149. </p:panel>
  150.  
  151. </p:dialog>
  152. </h:form>