数据库表设置

  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. userService 用户 会员 系统设计 v2 q224 .doc

    userService 用户 会员 系统设计 v2 q224 .doc 1. Admin  login1 2. 普通用户注册登录2 2.1. <!-- 会员退出登录 -->2 2.2. & ...

  2. 堆排序算法的java实现

         堆积排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素.堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O ...

  3. Rserve方式连接别的服务器

    Rserve Rserve的方式,这是一个基于TCP/IP的服务器,通过二进制协议传输数据,可以提供远程连接,使得客户端语言能够调用R 既然是TCP/IP 就可以在不同的机器上运行了 事实上官网给出了 ...

  4. ffmpeg截图

    ffmpeg.exe -probesize 32768 -i "rtmp://localhost/live/1 live=1" -y -t 0.001 -ss 1 -f image ...

  5. erlang 爬虫——爬取网页图片

    说起爬虫,大家第一印象就是想到了python来做爬虫.其实,服务端语言好些都可以来实现这个东东. 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌 ...

  6. 嵌入式开发之qt socket--- qt 封装的socket demo

    http://wuyuans.com/2013/03/qt-socket/ http://blog.chinaunix.net/uid-22480862-id-388253.html

  7. 简洁的一键SSH脚本

    这里发一个自己图省事搞的一个批量打通SSH的脚本,可能对于好多朋友也是实用的,是expect+python的一个组合实现,原理非常easy, 使用起来也不复杂,在此还是简单贴出来说说. noscp.e ...

  8. Tomcat的目录结构(tomcat 7)

    /bin                存放在Windows平台以及Linux平台上启动和关闭Tomat的脚本文件 /conf              存放关于Tomcat服务器的全局配置. /li ...

  9. 第一课 第一个nodejs程序

    这就是我们的第一个程序了 在控制台会输出:hello 我们需要运行该文件 开始->运行 cmd 进入我们的程序目录 我的是D:/nodejs/hello.js 进入程序目录cd D:/nodej ...

  10. 九度OJ 1325:Battle Over Cities(城市间的战争) (并查集)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:376 解决:132 题目描述: It is vitally important to have all the cities connect ...