【问题标题】:JSF - Richfaces, process submitted form data and then confirm to continue or cancelJSF - Richfaces,处理提交的表单数据,然后确认继续或取消
【发布时间】:2011-11-16 12:04:56
【问题描述】:

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

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

【问题讨论】:

    标签: jsf-2 dialog richfaces ajax4jsf confirmation


    【解决方案1】:

    是的,您需要使用 a4j。

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

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

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

    【讨论】:

    • 我认为也应该使用 a4j/ajax 调用。要清楚...我需要一个假的保存(提交)按钮来触发一个 ajax 调用,该调用使用填充的表单数据运行文件 I/O 操作方法。当文件操作成功完成后,我想在当前视图上调用 JavaScript 以自动提交表单或要求提交或取消表单提交。
    • 你能解释一下你的代码是什么意思吗?当我单击 cmdButton 时发生了什么?我认为检查第一个条件 en 比执行 modalPanel 或 someStuff ...但我需要先 doSomeStuff,检查条件然后确认提交...
    【解决方案2】:

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

    现在是解决方案。

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

    • 一些文件

    • 一个 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>  
    

    【讨论】:

      猜你喜欢
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多