【发布时间】:2017-05-08 08:47:20
【问题描述】:
我开发了一个视图来保存Child-objects。一切正常,但要在 <p:dataTable> 中查看我的其他对象,我总是必须手动重新加载网站。
在<p:commandButton> 的代码下方,它将表单数据发送到我的控制器类。
<h:panelGrid columns="3">
<p:commandButton value="Save"
action="#{childController.doSaveChild}"
oncomplete="PF('childAddDialog').hide()"
update=":childForm"/>
</h:panelGrid>
我已经尝试使用ajax="false",但它不起作用。
点击保存按钮后如何重新加载网站?
更新:
<p:dataTable>我的观点.xhtml:
<h:form id="childForm">
<p:dataTable id="childTable" var="child"
widgetVar="childTable" value="#{childController.children}"
paginator="true" rows="10" paginatorPosition="bottom"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}
{Exporters}"
rowsPerPageTemplate="10,25,50">
<p:column headerText="Firstname"
filterBy="#{child.firstName}"
sortBy="#{child.firstName}" filterStyle="display:none">
<h:outputText value="#{child.firstName}"/>
</p:column>
<p:column headerText="Lastname"
filterBy="#{child.lastName}"
sortBy="#{child.lastName}"
filterStyle="display:none">
<h:outputText value="#{child.lastName}"/>
</p:column>
<p:column headerText="Birthday"
filterBy="#{child.birthday}"
sortBy="#{child.birthday}"
filterStyle="display:none">
<h:outputText value="#{child.birthday}"/>
</p:column>
</dataTable>
</form>
这里提供子视图的方法:
public Collection<Child> getChildren(){
return children;
}
@PostConstruct
public void initList(){
setChildren(childService.getAllChildren());
}
【问题讨论】:
-
您正试图让您的解决方法发挥作用。我会专注于最初的问题。
-
您认为最初的问题是什么?我只想让网站自动重新加载。
-
正确的解决方案是让更新工作。您需要发布您的 dataTable xhtml 和相关的支持 bean 代码。
-
呃,它不能正常工作。也许您在保存后忘记更新
children属性,因此它仍会显示与添加新孩子之前一样的列表? -
Java 方法不会被魔法调用。它们被逻辑调用。这里唯一感兴趣的方法是
doSaveChild()。只要您的doSaveChild()方法不调用例如initList(),那么children显然不会在你救了孩子之后更新。
标签: ajax jsf primefaces