`
水卢(waterloo)
  • 浏览: 32307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何在Lotus Forms外创建一个Html的提交按钮将表单提交到服务器

阅读更多

Lotus Forms本身支持提交按钮将自己提交到服务器端。但在实际应用中往往需要在提交前进行一些操作,这些操作难以通过表单本身的提交按钮来触发,因此可以采用Html页面上的提交按钮来实现。

 

实现思路是通过Lotus Forms提供的js api实现,但由于3.5.1的js api未将表单提交api发布出来,因此需要曲线救国。

 

我的思路是通过js api修改表单中的一个隐藏域,表单中设计一个类型为done的action,这个action的active属性根据隐藏域的值进行变化,一旦隐藏域发生了变化action自动触发将表单提交到url上。代码如下:

<script src="./js/LF_XFDL.js"></script>
<script src="./js/LF_FormNodeP.js"></script>
<script type="text/javascript">

var objectID = "Main"; 

function submit() {
  
    try {
    
    var value = "<sumbittrigger>true</sumbittrigger>";
      // set the value of the HIDDENYEAR field, which activates the compute
      ibmForms[objectID].updateXFormsInstance(null,"instance('INSTANCE')/sumbittrigger",
          null, value, XFDL.UFL_XFORMS_UPDATE_REPLACE);     
      
    } catch (error) {
      alert("Could not set up custom form\n\n" + error);
    }
}
 
</script>

<input name="submit" type="button" onClick="submit();" value="submit" /> 

 

 

表单设计

 

<field sid="FIELD1">
         <xforms:textarea ref="instance('INSTANCE')/sumbittrigger">
            <xforms:label></xforms:label>
         </xforms:textarea>
         <itemlocation>
            <x>233</x>
            <y>110</y>
         </itemlocation>
         <scrollhoriz>wordwrap</scrollhoriz>
         <scrollvert>fixed</scrollvert>
      </field>

<action sid="ACTION1">
          <delay>
         <type>once</type>
         <interval>0</interval>
      </delay>
         
                  <type>done</type>
         <url>http://forms.cdb.com:8080/FormsJSTC/FormView</url>
         <active compute="toggle(PAGE1.FIELD1.value) == '1' ? 'on' : 'off'">off</active>
         
      </action>

 

 

FormView重载IBMWorkplaceFormsServerServlet,代码如下:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		try {
			this.useHTML(resp, true);
			
			String filePath = this.getServletContext().getRealPath("/Forms") + "/jsform.xfdl";
			FileInputStream fis = new FileInputStream(filePath);
			XFDL xfdl = IFSSingleton.getXFDL();
			FormNodeP form = xfdl.readForm(fis, XFDL.UFL_SERVER_SPEED_FLAGS);
			fis.close();		

			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			form.writeForm(bos, null, 0);
			
			bos.writeTo(resp.getOutputStream());				
			bos.close();

			this.setFormName(resp, "Main");
			resp.setContentType("application/vnd.xfdl");
		} catch (UWIException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html");
		resp.getWriter().write("Success");
	}


 通过以上这种方式,Lotus Forms可以专注于自己擅长的表单设计,而把与工作流交互的工作交给了html表单,大大的提高了表单的灵活性。

 

分享到:
评论

相关推荐

    Lotus Forms Server API

    Lotus Forms Server API是IBM提供的一套工具集,用于在服务器端管理和处理Lotus Forms(现更名为IBM iX Forms)的文档。这个API支持多种编程语言,包括C、Java和COM,使得开发者能够根据项目需求选择最适合的语言...

    Lotus C API 创建服务器端服务 Add-In Task

    本教程将带你逐步了解如何利用VC++ 6.0这一经典集成开发环境,结合Lotus C API来创建一个Domino服务器端的Add-In Task。 首先,理解Lotus C API的基础概念至关重要。它是一组函数,提供了对Notes数据库、文档、视图...

    Lotus Domino服务器安装配置实例

    安装配置的最终目的是实现一个稳定、高效、安全的Lotus Domino服务器环境,能够满足企业内部的邮件、日程安排和数据库应用需求。文章的“最终效果图”部分,虽然未详细描述,但暗示了完成以上步骤后,应该达到的一...

    Lotus Domino 第7章_在Web中使用表单.doc

    7.2.2 **创建特殊用途的模板表单**:通过模板表单,可以创建一个通用的设计,然后在多个表单中复用,以保持设计一致性并简化维护工作。 7.2.3 **嵌入视图**:在表单中嵌入视图可以使用户直接在表单页面上浏览和操作...

    Lotus Notes R5服务器与客户端配置

    2. **创建第一个Domino服务器**:这是配置的第一步,你需要为你的组织创建一个新的Domino服务器。在此阶段,需要提供服务器的名称、组织名和位置信息,这些信息将用于识别和管理服务器。 3. **选择设置方法**:在第...

    lotus domino邮件从一个数据库复制到另一个数据库

    Lotus Domino 邮件从一个数据库复制到另一个数据库 Lotus Domino 是一款功能强大且灵活的协作软件,提供了强大的电子邮件和数据库管理功能。然而,在实际操作中,我们经常需要将邮件从一个数据库复制到另一个...

    IBM Lotus Domino 7 邮件服务器配置全程攻略

    - **创建第一个Domino服务器**:此步骤非常重要,将创建整个Domino环境的第一个服务器实例,后续的服务器将以此为基础进行配置。 - **配置内容**:包括安装Domino服务器软件、配置基本网络设置、初始化Domino目录等...

    Lotus notes html edit

    MSHTMLEditor12可能是一个基于Microsoft Trident渲染引擎的HTML编辑器,它允许用户在Notes环境中以所见即所得的方式编辑HTML内容,类似于网页编辑器。 在Lotus Notes中,DOMINO是其服务器端的核心技术,它负责处理...

    安装Lotus Notes6.53服务器

    Lotus Notes 6.53 服务器的安装与配置是一个关键的过程,它涉及到多个步骤和选项,确保服务器能够正确地运行并提供所需的服务。Lotus Notes Domino 是一款强大的协作平台,结合了电子邮件、日历、任务管理、即时消息...

    lotus domino BS开发定制搜索表单

    首先,要定制Web搜索结果页面,你需要创建一个表单,并为其指定特定的表单名称。表单名通常遵循以下格式: 1. `$$SearchTemplate for viewname`:这种形式的表单与特定视图关联。例如,`"SearchTemplate for All ...

    lotus domino 表单文档相关--在表单中@PickList

    lotus domino 表单文档相关--在表单中@PickList

    IBM Lotus Domino 8.5 服务器管理入门手册

    IBM Lotus Domino 8.5 是一个强大的企业级服务器软件,提供电子邮件、协作工具以及自定义应用程序的平台。它最初是 Lotus Notes Server,作为 Lotus Development Corporation 的客户端-服务器消息技术的服务器组件。...

    在Lotus中嵌入Fckeditor上传代码

    "在Lotus中嵌入Fckeditor上传代码"这个主题涉及到在Lotus Notes应用中集成FCKeditor,一个流行的开源富文本编辑器,以实现更加美观且功能强大的附件上传功能。FCKeditor以其易于使用和高度自定义的特性,被广泛用于...

    lotus服务器常用命令大全

    7. **Drop All**:关闭所有服务器会话,这是一个全局操作,通常在需要重启服务器或进行重大维护时使用。 8. **Exit**:关闭服务器进程,需要注意的是,使用此命令后,无法通过远程控制台立即重启服务器。 9. **...

    如何在IBM Lotus Domino 服务器捕获外发的SMTP 邮件.zip

    在IBM Lotus Domino服务器环境中,SMTP(Simple Mail Transfer Protocol)是用于发送邮件的主要协议。了解如何在Domino服务器上捕获外发SMTP邮件对于系统管理员来说至关重要,这有助于进行故障排查、安全监控和日志...

    Lotus domino 学习大全

    在Lotus Domino中,有时需要将一个表单中的值复制到另一个表单中。这种需求可以通过编写Agent来实现。 **应用场景举例:** 将一个表单中的值复制到另一个表单: ```lotusscript Sub CopyValues Dim sourceDoc As ...

    lotus管理资料 内含相关lotus服务器架设攻略

    1. **Lotus Domino服务器架设**:设置Lotus Domino服务器涉及到多个步骤,包括安装服务器软件、配置网络设置、创建域和组织结构、设置服务器文档、以及安全策略。在实际操作中,需要熟悉Domino Directory(目录服务...

    lotus domino 表单文档相关--是否保存表单

    在表单设计时,我们可以在表单中添加一个名为`saveoptions`的域,并设置其初始值。这个值通常是一个字符串,可以是数字"1"或"0",分别代表“保存”和“不保存”。 例如,你可以在表单的返回按钮(或任何其他触发...

    lotus数据备份-服务器

    标题与描述均聚焦于“Lotus数据备份-服务器”,这一主题深入探讨了...这些步骤共同构成了一个全面的数据保护计划,旨在保障Lotus Domino服务器数据的安全、完整和可恢复性,是任何依赖该平台的企业都应重视的运维实践。

    搭建IBM Lotus Sametime服务器经验交流

    在Domino Server 7.0.1上安装Sametime可能会遇到问题,例如在退出服务器后重启时出现错误提示,这可能是因为服务器已经在另一个进程中运行。升级到7.0.2版本可以解决这个问题。 安装Domino Server是整个过程的关键...

Global site tag (gtag.js) - Google Analytics