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是IBM提供的一套工具集,用于在服务器端管理和处理Lotus Forms(现更名为IBM iX Forms)的文档。这个API支持多种编程语言,包括C、Java和COM,使得开发者能够根据项目需求选择最适合的语言...
本教程将带你逐步了解如何利用VC++ 6.0这一经典集成开发环境,结合Lotus C API来创建一个Domino服务器端的Add-In Task。 首先,理解Lotus C API的基础概念至关重要。它是一组函数,提供了对Notes数据库、文档、视图...
安装配置的最终目的是实现一个稳定、高效、安全的Lotus Domino服务器环境,能够满足企业内部的邮件、日程安排和数据库应用需求。文章的“最终效果图”部分,虽然未详细描述,但暗示了完成以上步骤后,应该达到的一...
7.2.2 **创建特殊用途的模板表单**:通过模板表单,可以创建一个通用的设计,然后在多个表单中复用,以保持设计一致性并简化维护工作。 7.2.3 **嵌入视图**:在表单中嵌入视图可以使用户直接在表单页面上浏览和操作...
2. **创建第一个Domino服务器**:这是配置的第一步,你需要为你的组织创建一个新的Domino服务器。在此阶段,需要提供服务器的名称、组织名和位置信息,这些信息将用于识别和管理服务器。 3. **选择设置方法**:在第...
Lotus Domino 邮件从一个数据库复制到另一个数据库 Lotus Domino 是一款功能强大且灵活的协作软件,提供了强大的电子邮件和数据库管理功能。然而,在实际操作中,我们经常需要将邮件从一个数据库复制到另一个...
- **创建第一个Domino服务器**:此步骤非常重要,将创建整个Domino环境的第一个服务器实例,后续的服务器将以此为基础进行配置。 - **配置内容**:包括安装Domino服务器软件、配置基本网络设置、初始化Domino目录等...
MSHTMLEditor12可能是一个基于Microsoft Trident渲染引擎的HTML编辑器,它允许用户在Notes环境中以所见即所得的方式编辑HTML内容,类似于网页编辑器。 在Lotus Notes中,DOMINO是其服务器端的核心技术,它负责处理...
Lotus Notes 6.53 服务器的安装与配置是一个关键的过程,它涉及到多个步骤和选项,确保服务器能够正确地运行并提供所需的服务。Lotus Notes Domino 是一款强大的协作平台,结合了电子邮件、日历、任务管理、即时消息...
首先,要定制Web搜索结果页面,你需要创建一个表单,并为其指定特定的表单名称。表单名通常遵循以下格式: 1. `$$SearchTemplate for viewname`:这种形式的表单与特定视图关联。例如,`"SearchTemplate for All ...
lotus domino 表单文档相关--在表单中@PickList
IBM Lotus Domino 8.5 是一个强大的企业级服务器软件,提供电子邮件、协作工具以及自定义应用程序的平台。它最初是 Lotus Notes Server,作为 Lotus Development Corporation 的客户端-服务器消息技术的服务器组件。...
"在Lotus中嵌入Fckeditor上传代码"这个主题涉及到在Lotus Notes应用中集成FCKeditor,一个流行的开源富文本编辑器,以实现更加美观且功能强大的附件上传功能。FCKeditor以其易于使用和高度自定义的特性,被广泛用于...
7. **Drop All**:关闭所有服务器会话,这是一个全局操作,通常在需要重启服务器或进行重大维护时使用。 8. **Exit**:关闭服务器进程,需要注意的是,使用此命令后,无法通过远程控制台立即重启服务器。 9. **...
在IBM Lotus Domino服务器环境中,SMTP(Simple Mail Transfer Protocol)是用于发送邮件的主要协议。了解如何在Domino服务器上捕获外发SMTP邮件对于系统管理员来说至关重要,这有助于进行故障排查、安全监控和日志...
在Lotus Domino中,有时需要将一个表单中的值复制到另一个表单中。这种需求可以通过编写Agent来实现。 **应用场景举例:** 将一个表单中的值复制到另一个表单: ```lotusscript Sub CopyValues Dim sourceDoc As ...
1. **Lotus Domino服务器架设**:设置Lotus Domino服务器涉及到多个步骤,包括安装服务器软件、配置网络设置、创建域和组织结构、设置服务器文档、以及安全策略。在实际操作中,需要熟悉Domino Directory(目录服务...
在表单设计时,我们可以在表单中添加一个名为`saveoptions`的域,并设置其初始值。这个值通常是一个字符串,可以是数字"1"或"0",分别代表“保存”和“不保存”。 例如,你可以在表单的返回按钮(或任何其他触发...
标题与描述均聚焦于“Lotus数据备份-服务器”,这一主题深入探讨了...这些步骤共同构成了一个全面的数据保护计划,旨在保障Lotus Domino服务器数据的安全、完整和可恢复性,是任何依赖该平台的企业都应重视的运维实践。
在Domino Server 7.0.1上安装Sametime可能会遇到问题,例如在退出服务器后重启时出现错误提示,这可能是因为服务器已经在另一个进程中运行。升级到7.0.2版本可以解决这个问题。 安装Domino Server是整个过程的关键...