Ajax从位于包含文件中的commandButton更新dataTable

时间:2012-12-12 11:52:14

标签: jsf jsf-2 primefaces

我有这样的情况: 在文件form.xhtml我有用于过滤一些表格的表格,我给了这里定义的按钮“过滤器”。

在文件tableOne.xhtml,tableTwo.html,..我有一个id为“filterTable”的dataTable,我还在这个页面中包含了form.xhtml。所有带有dataTables的页面都包含form.xhtml,其上的所有dataTable都具有相同的id“filterTable”

我想要做的是在使用ajax按下过滤器按钮后更新dataTable [#filterTable]。按钮由< p:commandButton>创建。如果form和datatable在同一个文件中定义,我只需要将update =“filterTable”添加到我的命令bytton。但如果我将它添加到form.xhtml中定义的按钮,我会得到“无法找到带标识符的组件”错误。

是否可以从页面上包含的xhtml文件外动态更新dataTable?如果是的话,我该怎么做?

1 个答案:

答案 0 :(得分:1)

示例:

test.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
    <h:form id="dtForm">
        <p:dataTable id="dataTable" />
    </h:form>
    <ui:include src="/include.xhtml" />
</h:body>
</html>

include.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
    <h:form>
        <p:commandButton value="button" update=":dtForm" />
    </h:form>
</h:body>
</html>