如何在不刷新页面的情况下使用selectBooleanCheckbox提交JSF PrimeFaces表单?

时间:2013-05-04 16:08:58

标签: ajax jsf primefaces submit

我正在使用JSF和PrimeFaces将应用程序作为大学的作业。我正在努力让事情变得有效。我正在使用PrimeFaces,我有一个包含5个标签的tabview。在其中一个选项卡中,我有一个dataTable,它有几行和多列。这一切都很好,但问题是我想提交表单而不重新渲染(整个页面)。问题是,dataTable中的每一列都有一个selectBooleanCheckbox,当选中该复选框时,一个按钮应该消失。如果未选中,则应显示该按钮。这适用于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>

1 个答案:

答案 0 :(得分:1)

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

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

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

相关问题