數據庫表設置
- 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
運行結果: