数据库表设置
- 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) |
| 表单描述说明 |
- 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
运行结果: