1

我正在使用 JSF 和 PrimeFaces 来申请大学作业。我正在努力使某些工作正常进行。我正在使用 PrimeFaces,并且我有一个包含 5 个选项卡的选项卡视图。在其中一个选项卡中,我有一个数据表,它有几行和几列。这一切都很好,但问题是我想提交表单而不重新呈现(整个页面)。The thing is, every column in the dataTable has a selectBooleanCheckbox, and when that checkbox is selected, a button should disappear. 如果未选中,则应显示该按钮。这适用于 onchange="this.form.submit()" 或 onclick="this.form.submit()" 但它会刷新整个应用程序,并导致选择第一个选项卡,而不是我之前的选项卡在。所以我' 我正在寻找一种解决方案,能够在不刷新整个程序的情况下提交和重新渲染一些东西。这是我的代码:

<body>
    <h:form id="customerForm">
        <p:dataTable id="customerlist" var="c" value="#{customerBean.customerList}">
            <p:column>
                <f:facet name="header">Select</f:facet>
                <center>
                    <p:selectBooleanCheckbox value="#{c.selected}" onchange="this.form.submit()"/>
                </center>
            </p:column>
        </p:dataTable>
        <h:commandButton id="testtest" value="test" rendered="#{customerBean.numberSelected() == 0}"/>
    </h:form>
</body>

为了简单起见,我删除了大部分列。解决方案是什么?我试过用ajax,但没用

<p:selectBooleanCheckbox value="#{c.selected}">
    <f:ajax event="click" execute="@form" render="@none"/>
</p:selectBooleanCheckbox>
4

1 回答 1

2

你真的需要提交整个表格吗?如果视图被重新渲染就足够了,请尝试更新表单。为此,您可以使用 primefaces ajax 事件。

<p:selectBooleanCheckbox value="#{c.selected}">
    <p:ajax update="@form"/>  
</p:selectBooleanCheckbox>

如果这不起作用,请告诉我们“..ajax,不起作用”的确切含义。是否提交了任何 POST 请求?是否调用了任何 Action/Setter?

于 2013-05-04T16:46:00.370 回答