java自动生成表单简单实例

数据库表设置

  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

运行结果:

原文地址:https://www.cnblogs.com/gynbk/p/6588229.html