数据库表设置
- 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
运行结果: