java自动生成表单简单实例
2024-08-29 20:34:13
数据库表设置
- 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
运行结果:
最新文章
- Java基础学习--抽象类与抽象函数
- ios - NSTimer中target的self是强引用问题
- 关于XE10下Indy发送字符串编码的问题
- WinForm GDI+ 资料收集
- ajax之get、post
- ASP.NET 5
- System.Data.Entity 无法引用的问题
- 【JAVA、C++】LeetCode 014 Longest Common Prefix
- TYVJ P1048 田忌赛马 Label:dp
- C++ Template Operator
- 解决Boost.Regex对中文支持不好的问题
- 关于JS中数组的分析操作
- oracle12c之 单机12.1.0.1打补丁
- uploadify上传文件(2)--基础语法
- Cocos2D在新版Swift中常量枚举值引用代码的修改
- [BZOJ1925][SDOI2010]地精部落(DP)
- C#(在WeBAPI)获取Oracle(在PL/SQL)游标类型的存储过程(用到了RefCursor)
- T4代码生成器
- June 13. 2018 Week 24th. Wednesday
- blender 操作快捷键