java自动生成表单简单实例
数据库表设置
- 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自动生成表单简单实例的更多相关文章
- 基于PHP和mysql的自动生成表单
开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...
- yii2自动生成表单
视图中: 1.要use的两个文件类 use yii\helpers\Html; use yii\widgets\ActiveForm; 2.生成表单,以添加商品为例说明.注意红线区域:上传文件需要 ...
- java 传入用户名和密码并自动提交表单实现登录到其他系统
不用单点登录,模拟远程项目的登录页面表单,在访问这个页面的时候自动提交表单到此项目的登录action,就可以实现登录到其他系统. ssh框架项目 1.以下是本地系统的action代码: import ...
- Mybatis上路_06-使用Java自动生成[转]
Mybatis上路_06-使用Java自动生成 11人收藏此文章, 我要收藏发表于1个月前(2013-04-24 23:05) , 已有151次阅读 ,共0个评论 目录:[ - ] 1.编写Gener ...
- Cleave.js – 自动格式化表单输入框的文本内容
Cleave.js 有一个简单的目的:帮助你自动格式输入的文本内容. 这个想法是提供一个简单的方法来格式化您的输入数据以增加输入字段的可读性.通过使用这个库,您不需要编写任何正则表达式来控制输入文本的 ...
- 去掉chrome记住密码后自动填充表单的黄色背景
chrome表单自动填充后,input文本框的背景会变成黄色的,通过审查元素可以看到这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对 ...
- Bootstrap+PHP表单验证实例
简单实用的Bootstrap+PHP表单验证实例,非常适合初学者及js不熟悉者,还有ajax远程验证 js验证表单 1 $(document).ready(function() { 2 $('#def ...
- javascript自动填写表单小技巧
javascript自动填写表单小技巧 在平时开发过程中,或者在访问某些站点,经常要频繁地填写一大堆表单时,我们可以利用javascript,写一段脚本,预先把要填的信息准备好,然后模拟点击按钮的动作 ...
- hibernate.hbm2ddl.auto=update不能自动生成表结构
在写上篇文章<spring整合springmvc和hibernate>的时候,曾遇到一个问题 INFO: Server startup in 8102 ms Hibernate: inse ...
随机推荐
- shell学习五十七天----linux任务管理,针对上一讲的总结和扩展
linux任务管理 在linux下有两类任务管理,各自是一次性和周期性.一次性是at和batch,周期性又分为系统不论什么和用户任务. 一次性任务: 1.命令格式:at [选项] time 2.选项: ...
- k8s部署nginx集群
环境: 两台虚拟机, 10.10.20.203 部署docker.etcd.flannel.kube-apiserver.kube-controller-manager.kube-scheduler ...
- left join,right join用法简介
方法一(推荐): select a.man_id,man_name,d.sex_name,zw_name,c.money from man as a left join zw as b on a.zw ...
- android 布局特点
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_cont ...
- mysql ODBC连接配置
1.软件包安装 [root@server1 mysql]# rpm -ivh MySQL-server-5.1.72-1.glibc23.i386.rpm [root@server1 mysql]# ...
- 【入门】创建express项目
1.创建项目(图解) 2.访问http://localhost:3000/就看到熟悉的页面了 3.查看项目目录 参考文档:http://jingyan.baidu.com/article/92 ...
- unity绝对路径与相对路径转化
绝对路径->相对路径 string mp =“H:\unity(project)\New Unity Project\Assets\111.mat”; mp = mp.Substring(mp. ...
- hiho一下 第二周&第四周:从Trie树到Trie图
hihocoder #1014 题目地址:http://hihocoder.com/problemset/problem/1014 hihocoder #1036 题目地址: http://hihoc ...
- 自定义TextView带有各类.ttf字体的TextView
最近项目遇到了将普通文字转化为带有字体样式的文字,这里就涉及到了.ttf文件,我上网百度了不少资料最终终于实现了,现在想想其实并不复杂 1,你需要下载一种.ttf字体文件,你可以从网上找到一种字体的. ...
- Python中使用__new__实现单例模式并解析
阅读文章前请先阅读 Python中类方法.__new__方法和__init__方法解析 单例模式是一个经典设计模式,简要的说,一个类的单例模式就是它只能被实例化一次,实例变量在第一次实例化时就已经固定 ...