如何刷新页面时,如何更新primefaces.Datatable更新中的数据表。我找到了一些解决方案,但它们都没有为我工作。例如,当我将更新更改为“:companyForm:companyPanel”时,保存按钮消失。我删除了冒号,现在我可以看到按钮,但仍然不更新数据表。这是我的jsf页面;
<h:form id="companyForm" prependId="false">
<p:panel id="companyPanel">
<p:dataTable id="companyListTable">
//columns
</p:dataTable>
</p:panel>
<p:outputPanel id="newDatePanel">
<p:commandButton value="Save"
update="companyForm:companyPanel
companyForm:newDatePanel"
action="#{myController.save()}"/>
</p:outputPanel>
</form>
和我的弹簧控制器;
init(){
companyList = service.getAllCompany();
}
public void save(){
service.save(company);
}
答案 0 :(得分:2)
实际上你的ids搞砸了,否则组件会被刷新。
组件的实际客户端ID取决于标记所在的命名容器。在这种情况下,命名容器为<h:form>
。当您在表单标记中包含prependId="false"
属性时,嵌套<p:panel id="companyPanel">
的客户端ID将为companyPanel
,否则(如果您完全省略prependId
) - 它将是{{ 1}}。
但是,由于您要在同一命名容器(表单)中更新组件,因此您无需在其前面加上表单ID,只需将其设为companyForm:companyPanel
:如果没有冒号而且没有形式ID,那就没有了。
在您的代码现在处于状态时,没有标识为<p:commandButton update="companyPanel">
的组件。