第三十九章 构建数据库应用程序 - 将数据绑定到表单

简介: 第三十九章 构建数据库应用程序 - 将数据绑定到表单

第三十九章 构建数据库应用程序 - 将数据绑定到表单

CSP提供了一种将对象数据绑定到HTML表单的机制。这种绑定使用标准的HTML表单和输入控件标签来定义表单,使可以轻松地使用任何HTML编辑器或设计工具来绑定表单。<csp:object>标记指定一个对象实例,属性cspbind被添加到表单和输入控件标记中,以指示它们应该如何绑定。

CSP编译器识别包含cspbind属性的表单,并自动生成代码:

  • 在适当的输入控件中显示指定对象属性的值。
  • 生成客户端JavaScript函数来执行简单的验证(如必需的字段检查)。
  • 生成客户端JavaScript函数以调用生成的服务器端方法来保存绑定对象。
  • 生成服务器端方法,验证并保存表单中的数据输入。这些方法可以使用CSP Event Broker从页面中直接调用,也可以作为表单提交操作的结果来调用它们。
  • 在表单中生成一个隐藏字段OBJID,其中包含绑定表单的对象ID值。

下面是一个绑定到Sample.Person实例的表单的简单示例。

<html>
<head>
</head>
<body>
<csp:object NAME="person" CLASSNAME="Sample.Person" OBJID="1">
<form NAME="MyForm" cspbind="person">
<br>Name:
<input type="TEXT" name="Name" cspbind="Name" csprequired>
<br>SSN:
<input type="TEXT" name="SSN" cspbind="SSN">
<br>City:
<input type="TEXT" name="City" cspbind="Home.City">
<br>
<input type="BUTTON" name="SAVE" value="SAVE" OnClick="MyForm_save();">
</form>
</body>
</html>
复制代码

本例使用<csp:object> 标记Sample.Person在类中打开的实例(在本例中,对象ID1)。此对象实例名为Person。然后,该示例将对象实例绑定到一个HTML表单,方法是向其form标记添加一个名为cspind的属性,其值为Person

该表单包含三个文本输入控件:NameSSNCity,它们分别绑定到对象属性NameSSNHome.City,方法是向它们的每个输入标记添加一个名为cspind的属性,其值是控件要绑定到的对象属性的名称。

请注意,绑定表单中使用的控件名称必须是有效的JavaScript标识符。

名称控件还有一个名为CSPREQUIRED的属性。这表示这是必填字段(必须为其赋值)。CSP编译器生成客户端JavaScript以测试用户是否为该字段提供了值。

表单上的最后一个控件是一个按钮,该按钮被定义为在单击时调用客户端的JavaScript函数MyForm_saveMyForm_save函数由CSP编译器自动生成。此函数收集表单中控件的值,并将它们发送到服务器端方法(也由CSP编译器自动生成),该方法重新打开对象实例,应用对属性所做的更改,将对象保存到数据库,并将JavaScript发送到客户端以更新表单中的值,以反映保存的内容。

请注意,我们在本文档中定义了HEAD部分。当使用绑定表单时,这是必要的,因为这是CSP编译器在处理绑定表单时可能生成的任何客户端JavaScript的位置。

按照约定,绑定表单中使用的对象的对象IDURL参数OBJID指定。 这使得绑定表单可以与预构建的页面交互,比如CSPSearch工具使用的那些页面。 要使用URL参数的值作为对象ID,请在csp:object标记中使用引用它的表达式:

<csp:object NAME="person"
CLASSNAME="Sample.Person" OBJID=#($G(%request.Data("OBJID",1)))#>


相关文章
|
3天前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!
|
1月前
|
架构师 数据库
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
数据库乐观锁是必知必会的技术栈,也是大厂面试高频,十分重要,本文解析数据库乐观锁。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
|
1月前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
33 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
1月前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
1月前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
55 3
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
66 2
|
1月前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
56 2
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
18 3