很久之前写的一篇关于自定表单的文章 http://www.iteye.com/topic/108474 ,按照此方案完成的自定义表单模块已运用于多个系统。
申明:本方案只是初步的解决思路,供大家参考、讨论。
关于自定义表单网上讨论的很多,个人比较偏向于基于Hibernate的解决方式,原因很简单,如果能够将用户自定义的字段信息通过Hibernate的方式存储,那么具备了Hibernate所带来的一切方便,比如:跨数据库等等。
但是有难度:
1、我们通常是先写一个静态的POJO,然后把它的属性映射到数据库表,那么,在字段不确定的情况下,如果把这些不确定的字段映射到数据库呢?当然可以通过cglib或javassist等等字节码工具动态生成class文件。
2、我们知道Hibernate是在服务器启动的时候,根据hbm映射文件创建表,那么在我们启动时候并不知道表信息的时候,如果在运行时,创建表呢?
第一个问题答案:
我们不一定要做POJO到数据库的映射,Hibernate的实体类型也可以是xml文档、Map,也就是说我们可以用户的表单信息做为xml文档或则Map提交给Hibernate处理。
第二个问题答案:
通过分析Hibernate源代码,我们可以在服务器运行中,请求Hibernate动态创建表,代码如下:
从 SessionFactory中拿到配置信息(不要去创建新的实例),增加HBM映射文件到Configuration ,请求Hibernate更新数据库。
Java代码
/**
* @author Li Tonggang
* @email love4ajax@gmail.com
*/
public class CustomAction extends BaseAction{
public String execute() throws MappingException, IOException{
SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) Service.getService("sessionFactory");
LocalSessionFactoryBean localSessionFactory = (LocalSessionFactoryBean) Service.getService("&sessionFactory");
// 从localSessionFactory拿到配置信息Configuration ,并且增加HBM映射文件到Configuration
Configuration config = localSessionFactory.getConfiguration();
Resource mappingLocation = new ClassPathResource("custom.hbm.xml");
config.addInputStream(mappingLocation.getInputStream());
// 从SessionFactory中拿到属性配置信息
Settings settings = sessionFactory.getSettings();
// 请求 Hibernate 创建表
if ( settings.isAutoUpdateSchema() ) {
new SchemaUpdate( config, settings ).execute( false, true );
}
return super.SUCCESS;
}
}
分享到:
相关推荐
本篇将深入探讨基于FLEX技术开发的B/S架构自定义表单系统,该系统旨在提供灵活、高效且可定制化的表单设计与管理解决方案。在B/S(Browser/Server)模式下,用户可以通过浏览器直接进行表单的设计、编辑以及数据的...
标题中的“自动填写表单的chrome插件”指的是一个用于谷歌浏览器(Chrome)的扩展程序,它的核心功能是在用户访问...对于想要学习Chrome插件开发或提高自动化填写表单能力的用户来说,这个插件是一个很好的学习资源。
- 对于每一个Web表单中,您可以设置默认的填充表单的动作,根据您的需要(“默认操作”,“不要求填写表格”,“不求回报”的填写及提交表格)。 - “批量模式”,填写并提交表格在一个周期为1。 现在,您可以简化...
自己实现的一个自动创建表单控件,包含控件源码和 示例源码。 用此控件需要为属性TableModel赋值,详细见示例。 根据数据库的数据类型,长度,创建表单(不支持二进制类型)。并可以把数据保存到数据库(添加、...
本篇文章将深入探讨如何利用Vue.js实现自定义表单生成,以及相关的核心知识点。 首先,我们要理解Vue.js的基本概念。Vue.js采用组件化开发模式,它允许开发者将UI拆分成可复用的组件,每个组件都有自己的视图和数据...
例如很多文本框的name标签都叫username,历史记录中可能保存了很多 username的值,这时如果再遇到name为username的文本框则会直接使用最近保存的一次的值进行填写。通过保存操作用户可以调整控制“默认值”。...
在VB(Visual Basic)编程环境中,自动填表和自动填写表单是一项常用的功能,尤其在自动化测试、数据录入和Web应用程序交互中。本教程将深入探讨如何利用VB实现这一功能,以及相关的源代码示例。 首先,理解VB自动...
通过本篇文章的学习,你将能够掌握以下核心知识点: - 如何在VB中操作HTML元素。 - 如何识别并填写不同类型的表单字段(例如:文本框、复选框、密码框等)。 - 如何模拟点击提交按钮完成表单提交。 #### 知识点详解...
- **定位与填写表单**:接下来,需要找到目标网页上相应的表单字段,并使用之前读取的数据来填写这些字段。这通常涉及使用JavaScript来定位和操作DOM元素。 - **处理复杂的网页结构**:如果目标网页包含框架或复杂的...
数据库存储还能支持多版本管理,方便回滚到之前的表单设计。 3. **设计服务器(design-server)** 这个模块可能包含了处理动态表单设计请求的服务器端逻辑。它可以提供API供前端调用,实现表单的设计、保存和查询...
当Session失效,用户通常会被重定向到登录页面,登录成功后,系统应能恢复之前的浏览状态,如返回原来的页面并保留用户可能已填写的表单数据。这涉及到一系列的技术处理和设计原则,包括Session管理、登录逻辑、页面...
模拟人工提交网页表单操作,同时监控提交结果变化并报警提示或自动处理报警动作。可广泛用于注册表单、登陆表单、信息添加修改表单提交。 1、支持多任务多操作连续提交,实现无人值守。 2、支持通过多代理服务器访问...
HTML5则引入了一系列新的表单元素和属性,使得网页表单的设计和验证更加便捷。在这个“bootstrap风格的html5表单验证示例”中,我们将深入探讨如何结合这两者来创建高效且用户友好的表单。 1. **HTML5表单元素**:...
表单Form的应用很广泛,我们可以利用form设计登录注册,也可以设计一种答题问卷的形式,今天主要讲一下form的使用 form表单,将组件内输入的”switch”,”input”,”checkbox”,”slider”,”radio”,”picker”的值...
现在提供一款ASP书写的辅助工具,把您从乏味的数据库表单字段处理中解放出来,只需点击几次鼠标,客户端的表单和服务器端的处理代码就可以自动生成了,然后你只需复制 粘贴就 ok 拉 ! 整个机制是用ASP来生成ASP. ...
写了好多表单样式 ,这个表单样式是我比较满意的Form表单样式
js实现form表单自动回显功能
下面将详细介绍关于form表单的相关知识点。 1. **HTML表单基础** HTML中的`<form>`标签用于定义表单,可以包含各种输入控件,如文本框、密码框、复选框、单选按钮、下拉菜单等。例如: ```html 用户名: ...
这个设计器允许开发者以可视化的方式创建和编辑表单,提供XML保存和加载表单布局的功能,以及一系列的设计时操作,如拖放、属性设置、复制/粘贴、对齐、撤销和重做。 **1. WinForm基础** WinForm是.NET Framework...
网上常见的用JS编写的注册表单验证的代码,非常实用哦