数据库表设置

  1. tb_form(form表单)

字段

类型

约束

说明

Id

Int

主键

主键

Formid

Varchar2(20)

唯一

Form表单id的值

Action

Varchar2(20)

唯一

Form表单action的值

Method

Varchar2(20)

非空

Form表单Method的值

Formtitle

Nvatchar2(50)

非空

Form表单的标题头信息

Orderby

Int

非空

同一申请流程的表单排序

Flowid

Int

外键

申请流程的外键

Remark

Nvatchar2(50)

表单描述说明

  1. tb_form_module(form的组件表)

字段

类型

约束

说明

Id

Int

主键

主键

Fromid

Int

外键

Tb_form表的外键

Inputtype

Varchar2(20)

非空

Input组件type的值

Inputid

Varchar2(20)

非空

Input组件id的值

Inputname

Varchar2(20)

非空

Input组件name的值

notnull

boolean

非空

默认值为false,用于判断字段是否有非空校验

Inputtitle

Nvatchar2(100)

非空

Input的显示标题

Remark

Nvatchar(100)

字段说明

在数据库创建表信息,这里就不介绍。

在java项目中创建对应表的Hibernate实体和映射文件。这里也不介绍了,可以自己搜索文档。

创建自动生成表单的Action类。

Action代码:

import java.util.Iterator;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport; import ssh.Tb.*;
import ssh.gx.HibernateDB; public class createForm extends ActionSupport {
//Form实体类,对应tb_form表
private Form form;
//FormModule实体类,对应tb_form_module表
private FormModule fmodule;
//页面输出内容变量
private StringBuffer sb=new StringBuffer();
//数据访问类,定义全局变量
private HibernateDB hdb; public Form getForm() {
return form;
}
public void setForm(Form form) {
this.form = form;
}
public FormModule getFmodule() {
return fmodule;
}
public void setFmodule(FormModule fmodule) {
this.fmodule = fmodule;
} public StringBuffer getSb() {
return sb;
}
public void setSb(StringBuffer sb) {
this.sb = sb;
} /**
* 自动生存表单
* @return string
*/
public String createForm(){
hdb=new HibernateDB();
//查询Form表单信息
List<Object> list=hdb.querySql("from Form");
//生存From表单
for(int i=0;i<list.size();i++){
form=(Form)list.get(i);
sb.append("<table><form ");
sb.append("action=\""+form.getAction()+"\" ");
sb.append("method=\""+form.getMethod()+"\">");
sb.append("<caption>"+form.getFormtitle()+"</caption>");
//添加表单内容
List<Object> listl=hdb.querySql("from FormModule where formid="+form.getId());
//使用迭代器
Iterator<Object> it=listl.iterator();
while(it.hasNext()){
fmodule=(FormModule)it.next();
//判断是否为非空
if(fmodule.getNotnull()>0){
//添加必填标识
sb.append("<tr><td>"+fmodule.getInputtitle()+"<font style=\"color: red;\">*</font></td>");
}else{
sb.append("<tr><td>"+fmodule.getInputtitle()+"</td>");
}
sb.append("<td><input name=\""+fmodule.getInputname()+"\" type=\""+fmodule.getInputtyoe()+"\"/>");
sb.append("</td></tr>");
}
sb.append("<tr><td><input type=\"submit\" value=\"提交\"/></tr></td></form></table>");
}
return "cform";
}
}

jsp页面使用Struts标签输出表单:

必须添加

<!-- 引入Struts标签 -->
<%@taglib prefix="s" uri="/struts-tags" %>
<!-- s:property标签的escape属性控制是否编译html标签,fase编译html标签,true否 -->
<s:property value="sb" escape="false"></s:property>

数据库插入信息

Tb_Form表

Tb_Form_module

运行结果:

java自动生成表单简单实例的更多相关文章

  1. 基于PHP和mysql的自动生成表单

    开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...

  2. yii2自动生成表单

    视图中: 1.要use的两个文件类 use yii\helpers\Html;   use yii\widgets\ActiveForm; 2.生成表单,以添加商品为例说明.注意红线区域:上传文件需要 ...

  3. java 传入用户名和密码并自动提交表单实现登录到其他系统

    不用单点登录,模拟远程项目的登录页面表单,在访问这个页面的时候自动提交表单到此项目的登录action,就可以实现登录到其他系统. ssh框架项目 1.以下是本地系统的action代码: import ...

  4. Mybatis上路_06-使用Java自动生成[转]

    Mybatis上路_06-使用Java自动生成 11人收藏此文章, 我要收藏发表于1个月前(2013-04-24 23:05) , 已有151次阅读 ,共0个评论 目录:[ - ] 1.编写Gener ...

  5. Cleave.js – 自动格式化表单输入框的文本内容

    Cleave.js 有一个简单的目的:帮助你自动格式输入的文本内容. 这个想法是提供一个简单的方法来格式化您的输入数据以增加输入字段的可读性.通过使用这个库,您不需要编写任何正则表达式来控制输入文本的 ...

  6. 去掉chrome记住密码后自动填充表单的黄色背景

    chrome表单自动填充后,input文本框的背景会变成黄色的,通过审查元素可以看到这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对 ...

  7. Bootstrap+PHP表单验证实例

    简单实用的Bootstrap+PHP表单验证实例,非常适合初学者及js不熟悉者,还有ajax远程验证 js验证表单 1 $(document).ready(function() { 2 $('#def ...

  8. javascript自动填写表单小技巧

    javascript自动填写表单小技巧 在平时开发过程中,或者在访问某些站点,经常要频繁地填写一大堆表单时,我们可以利用javascript,写一段脚本,预先把要填的信息准备好,然后模拟点击按钮的动作 ...

  9. hibernate.hbm2ddl.auto=update不能自动生成表结构

    在写上篇文章<spring整合springmvc和hibernate>的时候,曾遇到一个问题 INFO: Server startup in 8102 ms Hibernate: inse ...

随机推荐

  1. Atitit.远程接口 监控与木马   常用的api 标准化v2 q216

    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216 1. 木马与远程接口 监控的常用的api2 1.1. 文件复制2 1.2. 屏幕定时截图2 1.3. 邮件发送2 1.4.  ...

  2. Junit的各种断言

    JUnit为我们提供了一些辅助函数,他们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言.下面我们来介绍一下JUnit的各种断言. 1.assertEquals 函 ...

  3. hdu 1398 Square Coins 分钱币问题

    Square Coins Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  4. eclipse导入svn工程,在文件夹里面不展示svn工程图标

    原因:没有安装subclipse插件 解决方法:在marketplace中搜索插件名字:subclipse,点击安装,或者在instal new software中输入插件名字,安装完成之后,在文件夹 ...

  5. iOS swift NSClassFromString将字符串转换成类名

    在oc中将字符串转换成类名直接调用NSClassFromString("classname")即可,但是到了swift中变的麻烦多了 swift中如果要将字符串转换为类型需要以下几 ...

  6. Hadoop2.6.0版本MapReudce示例之WordCount(二)

    继<Hadoop2.6.0版本MapReudce示例之WordCount(一)>之后,我们继续看MapReduce的WordCount示例,看看如何监控作业运行或查看历史记录,以及作业运行 ...

  7. 《TomCat与Java Web开发技术详解》(第二版) 第八章节的学习总结 -- 访问mysql

    终于学到如何访问Mysql了 1. 可以看看此章节提供的sql脚本,以后可以照着写了.此外,对于Mysql如何使用,最好的地方就是其官网介绍了.http://dev.mysql.com/doc/ref ...

  8. Linux进程间通信(二) - 消息队列

    消息队列 消息队列是Linux IPC中很常用的一种通信方式,它通常用来在不同进程间发送特定格式的消息数据. 消息队列和之前讨论过的管道和FIFO有很大的区别,主要有以下两点(管道请查阅我的另一篇文章 ...

  9. 基于SqlDependency的Asp.net数据缓存

    首先,确保目标数据库的is_broker_enabled已经enabled. SELECT name, is_broker_enabled FROM sys.databases 如果不是enabled ...

  10. 【BZOJ3698】XWW的难题 有上下界的最大流

    [BZOJ3698]XWW的难题 Description XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核.XWW给你出了 ...