很久之前写的一篇关于自定表单的文章

[b]很久之前写的一篇关于自定表单的文章 http://www.iteye.com/topic/108474 [/b],按照此方案完成的自定义表单模块已运用于多个系统。

申明:本方案只是初步的解决思路,供大家参考、讨论。
关于自定义表单网上讨论的很多,个人比较偏向于基于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;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 HTML 中的表单,我可以为您提供一些基本的知识和指导。 表单是 HTML 中非常重要的一部分,它可以让用户在网页上输入数据并将其提交到服务器进行处理。表单通常包括输入框、下拉框、单选框、复选框等元素,这些元素可以通过 HTML 标签来创建。 首先,我们需要使用 form 标签来创建一个表单,例如: <form action="submit.php" method="post"> <!-- 表单元素 --> </form> 其中,action 属性指定了表单提交的地址,method 属性指定了提交的方式,可以是 post 或 get。 接下来,我们可以使用 input 标签来创建输入框,例如: <input type="text" name="username" placeholder="请输入用户名"> 其中,type 属性指定了输入框的类型,name 属性指定了输入框的名称,placeholder 属性指定了输入框的提示信息。 除了输入框,我们还可以使用 select 标签来创建下拉框,例如: <select name="gender"> <option value="male">男</option> <option value="female">女</option> </select> 其中,name 属性指定了下拉框的名称,option 标签用于创建下拉框中的选项,value 属性指定了选项的值。 类似地,我们还可以使用 radio 和 checkbox 标签来创建单选框和复选框,例如: <input type="radio" name="gender" value="male">男 <input type="radio" name="gender" value="female">女 <input type="checkbox" name="hobby" value="reading">阅读 <input type="checkbox" name="hobby" value="music">音乐 最后,我们需要使用 submit 按钮来提交表单,例如: <input type="submit" value="提交"> 当用户点击提交按钮时,表单数据将被提交到服务器进行处理。 以上是关于 HTML 中表单的基本知识和指导,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值