数据库表设置

  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

运行结果:

最新文章

  1. Java基础学习--抽象类与抽象函数
  2. ios - NSTimer中target的self是强引用问题
  3. 关于XE10下Indy发送字符串编码的问题
  4. WinForm GDI+ 资料收集
  5. ajax之get、post
  6. ASP.NET 5
  7. System.Data.Entity 无法引用的问题
  8. 【JAVA、C++】LeetCode 014 Longest Common Prefix
  9. TYVJ P1048 田忌赛马 Label:dp
  10. C++ Template Operator
  11. 解决Boost.Regex对中文支持不好的问题
  12. 关于JS中数组的分析操作
  13. oracle12c之 单机12.1.0.1打补丁
  14. uploadify上传文件(2)--基础语法
  15. Cocos2D在新版Swift中常量枚举值引用代码的修改
  16. [BZOJ1925][SDOI2010]地精部落(DP)
  17. C#(在WeBAPI)获取Oracle(在PL/SQL)游标类型的存储过程(用到了RefCursor)
  18. T4代码生成器
  19. June 13. 2018 Week 24th. Wednesday
  20. blender 操作快捷键

热门文章

  1. 浅谈&amp;quot;壳&amp;quot;(一)
  2. Trie|如何用字典树实现搜索引擎的关键词提示功能
  3. CSRF--花式绕过Referer技巧
  4. Linux的驱动模块管理:modprobe
  5. eclipse +cygwin+C++
  6. 对无向图的深度优先搜索(DFS)
  7. 嵌入式开发之手机arm汇总---科普手机arm
  8. unity shader学习笔记(1) shader基础结构以及Properties面板
  9. 常见UI组件的一个模板
  10. ios 10 sticker pack application