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



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

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

首先我必须纠正我的问题标题。不是正在"处理提交的表单数据",而是表单数据将在一些验证后提交

现在解决方案。

例如,在我的表单中有如下内容:

    一些filelds
  • and a4j:commandButton来呈现字段并执行doSomeStuff()动作

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

1-用户点击'fake'提交按钮,这是一个a4j:命令按钮,

2- Ajax调用更新renderer属性

中的字段

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>  

是的,您需要使用a4j。

试试这样做(未测试,但遵循算法):

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

这向您展示了如何在必要时显示模态面板。没有更多的代码我不能帮助你更多,但我认为这应该帮助你…

最新更新