【问题标题】:JSF 2 Page not refreshing after action completes操作完成后 JSF 2 页面不刷新
【发布时间】:2023-03-12 18:25:02
【问题描述】:

我遇到了一个问题,即我的页面在操作完成后没有刷新。

我在一个页面上有这个表格:

<h:form id="fundingResults">

    <p:ajaxStatus style="width:16px;height:16px;">
        <f:facet name="start">
            <p:graphicImage value="/images/loading4.gif" />
        </f:facet>
        <f:facet name="complete">
            <h:outputText value="" />
        </f:facet>
    </p:ajaxStatus>

    <p:dataTable>
        // some form elements in the table
    </p:dataTable>  

   <p:commandButton id="btnEdit" value="Submit" type="submit" action="#{fundingBacker.classifyProducts}" style="float: right;margin-top:15px;" />           

</h:form>

我的classifyProducts方法骨架是这样的:

public void classifyProducts() {
    // a bunch of stuff goes on in here
}

由于隐式导航,classifyProducts()方法完成后页面不应该自动刷新吗?

【问题讨论】:

    标签: java jsf primefaces


    【解决方案1】:

    Primefaces 命令按钮默认发送 ajax 请求。尝试将属性ajax='false' 添加到p:commandButton

    【讨论】:

    • 太棒了。我没有意识到这一点。有效。不过,我不能再接受 8 分钟的回答。
    • 这不是一个好主意。默认情况下,请求是 ajax 是有原因的。通常不需要刷新整个页面。
    • 我需要刷新页面,因为在我的分类产品函数中,其中有逻辑,并且根据逻辑的结果,它要么更新页面,要么重定向到不同的页面。
    【解决方案2】:

    您需要指定要刷新页面的哪些部分。例如,将 update="@form" 添加到 commandbutton 标签应该可以解决问题,或者您可以指定要更新的各个组件的 id。

    【讨论】:

    • 不是树。一个动作属性应该做一个重定向。 actionListener 需要更新才能实际更新页面的一部分。我不知道 primefaces 默认情况下是 ajax=true 。至少这是我对它的理解。不过我很可能是错的..
    猜你喜欢
    • 1970-01-01
    • 2011-04-23
    • 2013-12-12
    • 2021-10-08
    • 1970-01-01
    • 2014-06-21
    • 2012-08-13
    • 1970-01-01
    • 2013-12-25
    相关资源
    最近更新 更多