java自动生成表单简单实例

本文介绍了一种基于Java和Hibernate技术自动生成HTML表单的方法。通过查询数据库表tb_form和tb_form_module的信息,动态构建表单内容,并利用Struts标签在jsp页面上展示。此外,还展示了如何在Action类中实现表单数据的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库表设置

  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值