数据库表设置

  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. 【机器学习详解】SMO算法剖析(转载)

    [机器学习详解]SMO算法剖析 转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51227754 CSDN−勿在浮沙筑高台 本文力 ...

  2. UIWebView的全屏截图

    项目开发中,我们可能会遇到如下的应用场景:将一篇文章,进行截屏(需要全屏截取,包括滚动部分)后,分享到新浪微博.邮箱等等.前段时间,我在应用开发中实现了该功能,代码也是从网上找到的,自己整理了一下.主 ...

  3. LINQ TO SQL:操作有层次关系的对象

    对于关系型数据与对象数据之间最大的隔阂就是由标识列连接起来的行(关系型数据)与由集合保存的对象(对象数据)之间的冲突. 例如某个Subject对象(也就是数据库中的Subject表),从Subject ...

  4. 简单的积雪shader

    // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' Shader "Custom/CoverSnow&q ...

  5. DICOM:C-GET服务

    背景: 之前博文对照过多次C-MOVE与C-GET服务的差别,两者最大的差别在于C-GET是基于单个TCP连接的点对点的双方服务.而C-MOVE是基于两个TCP连接的三方服务(详情參见:<DIC ...

  6. Bootstrap的js插件之轮播(carousel)

    轮播请查看下面演示样例.基本已经涵盖最经常使用的一个轮播 <!DOCTYPE html> <html lang="en"> <head> < ...

  7. JS分段传输数据

    <SCRIPT language=javascript> file://数据拆分,并放到相应的hidden域中,在Form的onSubmit事件中激发 function fnPreHand ...

  8. VS2017下编译iconv

    从http://www.gnu.org/software/libiconv/ 下载 libiconv-1.11.1, 这是最后一个支持MSVC编译的版本. 打开 Visual Studio 2017 ...

  9. Python中pymysql模块详解

    安装 pip install pymysql 使用操作 执行SQL #!/usr/bin/env pytho # -*- coding:utf-8 -*- import pymysql # 创建连接 ...

  10. 我的设计模式学习笔记------>单例模式(Singleton)

    一.前言 有些时候,允许自由创建某个类的实例是没有意义,还可能造成系统性能下降(因为创建对象所带来的系统开销问题).例如整个Windows系统只有一个窗口管理器,只有一个回收站等.在Java EE应用 ...