2011-09-13 19 views
1

我想在提交表單時顯示確認對話框,以繼續或取消保存操作。我有一個保存按鈕的窗體,它調用一個動作方法來在表單中保存數據。 單擊保存按鈕時,在表單數據被保存之前,將在服務器上提供一個文件。來自文件的數據將被加入到表單數據中,然後te表單數據將被保存。我需要表單中的一些值來定義哪個文件可以被使用。目前沒有問題。當拋出FileNotFoundException或者找不到文件中的必要數據時,我想顯示一個確認對話框來繼續或取消帶有引發消息的保存操作。JSF - Richfaces,處理提交的表單數據,然後確認以繼續或取消

有沒有人有一些例子或任何想法如何處理?我需要使用a4j嗎?謝謝。 我使用的是Rifchfaces 3.3.3和Seamframework 2.2。

回答

1

起初我必須糾正我的問題標題。它是而不是繼續「處理已提交表格數據」,但表格數據將經過一些驗證後提交

現在的解決方案。

例如我已經按照在我的形式:

  • 一些filelds

  • 一個A4J:命令按鈕來重新描繪的字段,並執行doSomeStuff()動作

  • 一個隱藏H:或a4j:commandButton提交表單。

1-用戶點擊 '假' 提交按鈕其是A4J:commandButtton,

2-在重新呈現Ajax調用更新字段屬性

3-之後,方法doSomeStuff()用重新輸入的字段值執行

4-最後,Javascript將運行提交表單或不提交表單。

形式:

<h:form id="myForm"> 
<h:inputText id="name" value="#{personHome.person.name}"/> 
<h:inputText id="surname" value="#{personHome.person.surname}"/>  

<a:commandButton value="Save" reRender="name, surname" 
      action="#{personHome.doSomeStuff()}" 
      oncomplete="return checkMessage('#{personHome.success}')" 
      id="a4jSave" /> 

<h:commandButton id="save" value="Save" 
        action="#{personHome.persist}" 
style="visibility:hidden" /> 

</h:form> 

的JavaScript:

<script language="javascript">   

      function checkMessage(success) { 
       if(success =='false') 
       { 
        return confirm('Do you want to submit this form?') ? submitForm() : false; 
       } else { 
          submitForm(); 
      } 
      } 

      function submitForm() { 
       document.getElementById('myForm:save').click(); 
       return false; 
      }    

     </script> 
0

是的,你需要使用a4j。

嘗試類似的東西(非測試,但按照算法):

<a4j:commandButton onclick="if(messageHasToBeDisplayed){Richfaces.showModalPanel('modalId');}else{doSomeStuff();}" /> 
... 
<a4j:jsFunction name="doSomeStuff" action="#{controller.doSomeStuff}" reRender="..."/> 

這說明你如何在必要時顯示一個模式面板。 沒有更多的代碼我不能幫助你更多,但我認爲這應該可以幫助你...

+0

我覺得也A4J/Ajax調用應該被使用。要清楚...我需要一個假保存(提交)按鈕來觸發一個使用填充表單數據運行文件I/O操作方法的ajax調用。當文件操作成功完成後,我想調用當前視圖上的JavaScript來自動提交表單或要求提交或取消表單提交。 – Yakari

+0

你能解釋一下你的代碼是什麼意思?當我點擊cmdButton時會發生什麼?我認爲,檢查首先條件恩比執行modalPanel或someStuff ...但我需要先doSomeStuff,檢查條件,然後確認提交... – Yakari