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

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM