2012-07-20 30 views
0

在我的應用程序有一個SelecOneMenu這顯示了一些項目,如下面..如何在面板完成渲染之前阻止JSF中的表單提交?

<h:selectOneMenu id="cmbInput" value="#{myBean.val}" required="true" requiredMessage="Some Message"> 
      <f:selectItem itemLabel="Please select" noSelectionOption="true" /> 
      <f:selectItems value="#{myBean.items}" /> 
      <f:ajax event="valueChange" render="myPanel"/> 
      <f:ajax listener="#{myBean.myListener}"/>    
</h:selectOneMenu> 

基本上只要用戶選擇它將呈現一個面板下方具有像下面一些輸入字段中的項目..

<h:panelGroup id="myPanel" rendered="#{myBean.someFlag}"> 
    <h:inputText id="input1" value="#{myBean.someVal}" required="true"> 
</h:panelGroup> 

還有一個「下一步」按鈕,它將用戶帶到下一頁。

我面臨的問題是,無論何時用戶從下拉列表中選擇一些內容並在面板呈現之前單擊下一個按鈕,它都會將他帶到下一頁。但我想阻止它,因爲該面板包含需要輸入的字段,所以我希望在下一次點擊時發生驗證錯誤。

+0

如果你能在項目中使用primefaces看看阿賈克斯狀況組件[阿賈克斯狀態(http://www.primefaces.org/showcase/ui /pprAjaxStatusScript.jsf) – Ravi 2012-07-21 14:11:25

回答

0

一些事情可以做的是

  1. 顯示加載中的圖像,使用戶知道有事情發生。
  2. 您可以使用jQuery Block Ui Plugin和Loading ...圖像。
  3. Javascript驗證我懷疑會工作,因爲html元素不會立即出現在選擇完成後直到更新視圖,並且在此窗口期間用戶可以單擊next,您可以檢查是否存在html元素和您的js驗證,或者您可以有服務器端驗證。

希望這有助於.....

相關問題