• [JWF]Special Buttons 执行生命周期


    特殊的Button

    一个特殊用途的Button同样是请求AdobeFormServer执行一个特殊的动作。

    特定的Button有:

    • FSSUBMIT_
    • FSPRINT_
    • FSSIGN_[name of signature object]
    • FSVERIFY_[name of signature object]
    • FSPREVIOUS_
    • FSNEXT_
    • FSRESET_

    FSSUBMIT_ button

    当用户点击FSSUBMIT_按键时,Web应用程序被请求,将表单上的数据发送给Adobe Form Server,并且允许Adobe Form Server执行当前表单上的脚本,执行脚本有

    • Click event for the FSSUBMIT_ button
    • OnCalculate event for all fields
    • OnCalculate event for the page
    • OnValidate event for all fields , including checks for mandatory fields
    • OnValidate event for the page , provided that all field validations were successful
    • OnFormClosing event , provided than the validations were successful

    当FSSUBMIT_ button被点击后,这个表单上的所有其它处理被终止,除非:

    • 应用程序发现有其它的动作需要提前执行
    • 有验证错误产生时

    下表显示动作的执行过程

    step User/Client actions (HTML) Application Actions (ASP) Adobe Form server actions (Object)
    1 点击了名为FSSUBMIT_的按键   执行客户端脚本
    2 浏览器向TargetURL发送HTTP Post请求    
    3   创建FormServer object,调用ProcessHTTPRequest()方法,发送IIS请求(发送的内容包括客户端上的数据)  
    4     打开XFT表单,如果先前已经将表单数据通过ProcessHTTPRequest方法发送给了Adobe Form Server,Adobe Form server将重新保存前面的代码数据,数据保存到模板中。
    5     将新的数据填充到表单模板中,对于多页表单,Server会分清应该填充哪个表单的。
    6     执行XFA模板中的点击脚本
    7     运行实例表单中所有的OnCalculate()脚本
    8     运行实例表单中的所有OnValidate()脚本。
    每一个表单中的组件都会经过验证。Form Server不会发现一个错误后就停止,而是全部进行验证,然后将出错的组件用都显示出来。
    9a 终端用户显示一个网页,网页内容有表单的全部组件内容及出错的组件列表。 判断Adobe From Server返回的FSAction代码,如果是FSValidate那么就继续执行后面的用户操作。
    向客户端浏览器执行BinaryWrite,将HTML写到客户端IE中。
    如果验证过程出错,显示至少一个错误,Form Server返回一个新的HTML网页,内容有:
       当前填写的数据表单
       一个框,里面记录了表单中的错误

    返回FSAction代码为FSValidate
    9b     如果没有错误,Adobe Form Server执行:
    1.执行OnFormClosing()脚本
    2.生成XML数据
    3.转换数据成UTF-8格式
    4.返回给调用的应用程序

    返回FSAction代码为FSSubmit
    10   确认Adobe Form Server返回的FSAction为FSSubmit

    确认表单已经处理完了FSSIGN_BUTTON ,Server返回了XML数据

    执行其它符加的处理
     
    11 根据Web应用程序的类型显示相应的结果    

    文章来源:http://ms.mblogger.cn/xuzhong/posts/16442.aspx
  • 相关阅读:
    LinkedList的实现源码分析
    ArrayList实现源码分析
    探索HashMap实现原理及其在jdk8数据结构的改进
    Maven的安装使用以及 Maven+Spring hello world example
    RedisHelper帮助类
    Stream 和 byte[] 之间的转换
    WCF For Silverlight跨域策略
    Linq Query常见错误
    Linq to Sharepoint--如何获取Linq Query 生成的CALM
    如何使用代码备份SQL Server数据库
  • 原文地址:https://www.cnblogs.com/xuzhong/p/232233.html
Copyright © 2020-2023  润新知