簡體   English   中英

<h:commandButton>操作后未刷新頁面

[英]<h:commandButton> is not refreshing page after actioned

您好,我們正在使用a4j標簽。

單擊按鈕后,我們將從數據庫中檢索數據。 即使數據在服務器中可用,也不會在視圖中顯示。 手動刷新網頁后會導致數據顯示錯誤。

這是代碼段..一些代碼在這里

  <rich:tab id="menu5" label="Recall">
  <ui:include src="/pages/mctrans/reCallMcifTrans.xhtml" />  
  </rich:tab>

reCallMcifTrans.xhtml包含以下代碼

<h:commandButton type="button" id="reCallbutton1" value="   Search   "
    styleClass="commandExButton">
    <a4j:support event="onclick" id="ajsf12"
        oncomplete="javascript:alert('Search   Completed');javascript:document.body.style.cursor='default';"
        action="#{mcifRecallTransBean.reCallSearch}" reRender="reCallgrid1" />
</h:commandButton>

看來您正在使用RichFaces 3.3。 因此,您不需要帶有<a4j:support><h:commandButton ,因為您可以使用已經執行此操作的<a4j:commandButton> 您可以將代碼重構為:

<a4j:commandButton type="button" id="reCallbutton1" value="Search"
    styleClass="commandExButton"
    action="#{mcifRecallTransBean.reCallSearch}"
    reRender="reCallgrid1"
    oncomplete="javascript:alert('Search   Completed');javascript:document.body.style.cursor='default';" />

確保您的reCallgrid1組件在<a4j:commandButton>的同一<h:form>中可用。

由於您還希望單擊按鈕時在搜索數據行為時添加等待 ,因此您可以將<a4j:status><a4j:commandButton>一起使用,如<a4j:status>演示中所示 這是一個基本示例:

<a4j:commandButton type="button" id="reCallbutton1" value="Search"
    styleClass="commandExButton"
    action="#{mcifRecallTransBean.reCallSearch}"
    reRender="reCallgrid1" />
<!-- Note that there's no oncomplete in this case -->
<a4j:status for="reCallbutton1">
    <f:facet name="start">
        <h:graphicImage  value="/res/images/wait.gif"/>
    </f:facet>
</a4j:status>

最后但並非最不重要的一點是,您應該將托管bean切換到請求范圍,並使用功能強大的RichFaces <a4j:keepAlive>來模擬JSF 2 @ViewScoped 您甚至可以在托管bean上以注釋形式使用它(無需其他配置):

@KeepAlive
public class McifRecallTransBean {
    //managed bean code here...
}

當您在Bean中使用請求參數時,您需要通過操作再次傳遞它們:

<h:commandButton type="button" id="reCallbutton1" value="Search" styleClass="commandExButton">
    <a4j:support event="onclick" id="ajsf12" oncomplete="javascript:alert('Search  Completed');javascript:document.body.style.cursor='default';" action="#{mcifRecallTransBean.reCallSearch}" reRender="reCallgrid1" />
    <f:param name="param1" value="#{param['param1']}" />
    <f:param name="param2" value="#{param['param2']}" />
</h:commandButton>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM