簡體   English   中英

Primefaces commandButton無法正常工作

[英]Primefaces commandButton not working properly

我想在按下CommandButton時刷新我的頁面(所有inputText框,所有復選框都為空,就好像重新加載了頁面一樣。我嘗試使用update =“ @ requestForm”,update =“:requestForm”,update = “ @all” ajax =“ false”,update =“ @([id $ = requestForm])”“,但沒有成功...

這是我的commandButton的代碼:

  <h:commandButton value="Save" id="saveBtn"
                        actionListener="#{requestBean.addRequest()}" ajax="false" />

我的表單具有id =“ requestForm”。 有任何想法嗎?

有很多方法可以實現它。

  1. 您可以將托管bean請求的范圍設置為。
  2. 您可以在提交后在backing bean中將值設置為null
  3. 您可以使用p:ajax組件的resetValues (設置為true )屬性。
  4. 您可以在p:commandButton使用p:resetInput組件
  5. 您可以在備用Bean中使用方法RequestContext.getCurrentInstance().reset("reference to the component to reset")

在Primefaces-ShowCase上有這些方法的示例, ResetInput在“其他”下搜索ResetInput

對於JSF當我們在輸入字段中輸入一些文本並將輸入字段與back bean映射時,UI-Page將在UI-page上顯示backing bean值的當前值。

示例 :如果您在java類中具有firstName字段,並且正在通過<p:inputText />設置名稱,然后單擊按鈕Save那么該值將一直存在,直到對象處於活動狀態。 因此,您必須在actionListener="#{requestBean.addRequest()}"方法中單擊save按鈕后,在firstName提供null值。 並使用update =“ @ form”。 如果兩者都不起作用,那么您必須為此編寫JavaScript。 如果沒有工作,請告訴我。

我不認為primefaces更新可與#id選擇器一起使用,請嘗試使用style類:

<h:form styleClass="form-selector"> 

<p:commandButton update="@(.form-selector)" />

試試這些;

<p:commandButton  value="Clear" process="@this" type="reset" update="requestForm">
                 <p:resetInput target="requestForm"/>
 </p:commandButton> 

如果它是一個對象,則需要將其設置為null並添加帶有update的ajax偵聽器。

resetForm(){obj=null;}

然后;

<p:ajax event="change" update="requestForm" listener="${resetForm()}"/>

這就是我必須這樣做的方式-誰知道原因:

      <p:commandButton value="Reset" icon="ui-icon-refresh" process="@this" update=":form">
        <p:resetInput target=":form" clearModel="true" />
      </p:commandButton>

根據您的需要,可能不需要clearModel。 請參閱關於resetInput的clearModel的PrimeFaces文檔(默認為false):“啟用后,重置輸入還會將空值設置為綁定值,以便重置輸入值和模型值。”

正如有人在這里告訴我們:

萬一有人遇到同樣的問題...

p:resetInput不接受@form作為目標。 您必須提供要清除的表單/命名容器的實際ID。 我已經看到了使用@form作為目標的在線代碼示例(我認為在StackOverflow上的某個地方)-不要被愚弄,這是行不通的。

這就是為什么我使用target=":form"原因,因為我的根NamingContainer是<h:form id="form"> 有對NamingContainers選擇的東西的信息加載在這里

另外,請注意,您可以執行以下操作以首先具有確認對話框:

      <p:commandButton value="Reset" icon="ui-icon-refresh" process="@this" update=":form">
        <p:resetInput target=":form" clearModel="true" />
        <p:confirm header="Confirm Reset" message="Are you sure you want to reset all changes?" icon="ui-icon-help" />
      </p:commandButton>

      <p:confirmDialog global="true" closable="true" closeOnEscape="true" showEffect="fade" hideEffect="fade">
        <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close"  />
        <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
      </p:confirmDialog>

暫無
暫無

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

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