2011-09-13 22 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