JSF - Richfaces,处理提交的表单数据,然后确认继续或取消

时间:2011-09-13 20:22:01

标签: jsf-2 dialog richfaces ajax4jsf confirmation

我希望在提交表单时显示确认对话框以继续或取消保存操作。我有一个带有保存按钮的表单,它调用一个动作方法来保存表单中的数据。 单击“保存”按钮时,将在表单数据保留之前在服务器端重新加载文件。来自文件的数据将被连接到表单数据中,然后将保留表单数据。我需要表单中的一些值来定义将被加载的文件。到目前为止没有问题。抛出FileNotFoundException或找不到文件中的必要数据时,我想显示一个确认对话框,以继续或取消导致消息的保存操作。

有人有一些例子或任何想法如何处理这个?我需要使用a4j吗?谢谢。 我使用的是Rifchfaces 3.3.3和Seamframework 2.2。

2 个答案:

答案 0 :(得分:1)

首先,我必须更正我的问题标题。 继续“处理提交的表单数据”,但表单数据将在经过一些验证后提交

现在的解决方案。

例如,我的表格中有以下内容:

  • 一些档案

  • a4j:commandButton reRender字段并执行doSomeStuff()操作

  • 一个隐藏的h:或a4j:commandButton来提交表单。

1-用户点击'假'提交按钮,这是一个a4j:commandButtton,

2-Ajax调用reRender属性中的更新字段

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>  

答案 1 :(得分:0)

是的,你需要使用a4j。

尝试类似的东西(未测试,但遵循算法):

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

这将向您展示如何在必要时显示模式面板。 没有更多代码,我无法帮助你,但我认为这应该对你有帮助......