1

我想在提交表单时显示一个确认对话框以继续或取消保存操作。我有一个带有保存按钮的表单,它调用一个操作方法来将数据保存在表单中。单击保存按钮时,将在保存表单数据之前在服务器端读取文件。来自文件的数据将被连接到表单数据中,然后表单数据将被持久化。我需要表单中的一些值来定义将读取哪个文件。到目前为止没有问题。当抛出 FileNotFoundException 或找不到文件中的必要数据时,我想显示一个确认对话框以继续或取消保存操作并显示相关消息。

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

4

2 回答 2

1

首先,我必须更正我的问题标题。它不是在“处理提交的表单数据”,而是在经过一些验证后提交的表单数据

现在解决方案。

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

  • 一些文件

  • 一个 a4j:commandButton 来重新渲染字段并执行 doSomeStuff() 操作

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

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

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>  
于 2011-09-20T11:56:57.157 回答
0

是的,您需要使用 a4j。

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

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

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

于 2011-09-15T08:02:55.473 回答