动态表单(动态表单是什么意思)

网友投稿 833 2023-01-06

本篇文章给大家谈谈动态表单,以及动态表单是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享动态表单的知识,其中也会对动态表单是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

网站建设中动态表单有什么作用

在进行网站建设的过程中,动态表单主要负责数据采集的功能,比如可以采集访问者的名字和e-mail地址、调查表、留言簿等等。

一个表单有三个基本组成部分:

表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。

表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。

表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。

动态表单及动态建表实现原理

应用场景

项目中往往需要动态的创建一个表单 或者添加一个新的数据模板 这时候因为需要在运行时动态的创建表以及动态的维护表字段甚至表关系 使得普通java解决方案变得困难重重

实现工具

Hibernate + Spring + Groovy +Freemarker

Hibernate 作用很简单负责创建数据库表这样可以避免我们自己去写复杂的sql和判断

Spring 作为桥梁起到连接纽带的作用

Groovy做为动态语言 在项目运行时根据模板创建访问数据库 或者控制层代码

Freamker 可以根据提前定义好的模板生成 hibernate配置文件 以及Groovy代码

实现原理

首先创建Form 和 FromAttribute 两张表关系一对多 Form表记录表单的名称 类别 甚至是作为在动态生成表单时的css样式信息 FromAttribute记录表单字段信息 如名称 类别等 有动态表单了表单以及表单项的信息后就可以创建数据库表了

测试代码

public void testGenerator(){

Form form = formService getAll() get( )

List list = formAttributeService

getAttributeListByFormId(form getId()) form setFormAttributeList(list) DbGenerator dg = new DbGenerator(form dataSource) dg generator()

}

DbGenerator

import java io IOException import java io StringWriter import java io Writer import java sql SQLException import java util HashMap import java util Map import java util Properties

import javax sql DataSource

import hibernate tool hbm ddl SchemaExport import slf j Logger import slf j LoggerFactory

import freemarker template Configuration import freemarker template Template import freemarker template TemplateException

public class DbGenerator {

private DataSource dataSource

protected Map root = new HashMap()

private static Logger log = LoggerFactory getLogger(FormGenerator class)

protected String path

protected String packageName

private Form form

protected Configuration getConfig(String resource){

Configuration cfg = new Configuration()

cfg setDefaultEncoding( UTF ) cfg setClassForTemplateLoading(this getClass() resource)

return cfg

}

public DbGenerator(Form form DataSource dataSource) { this form = form this dataSource = dataSource

}

public void generator(){

if(null == form getFormAttributeList() || form getFormAttributeList() size() == ){

return

}

Template t

try {

t = getConfig( /template ) getTemplate( hibernate ftl )

Writer out = new StringWriter()

t process(getMapContext() out) String xml = out toString()

createTable(xml)

log debug(xml)

} catch(IOException e){

e printStackTrace()

} catch(TemplateException e){

e printStackTrace()

}

@SuppressWarnings( unchecked )

Map getMapContext(){

root put( entity form)

return root

}

public void createTable(String xml){

hibernate cfg Configuration conf = new hibernate cfg Configuration() nfigure( /hibernate/hibernate cfg xml )

Properties extraProperties = new Properties()

extraProperties put( hibernate hbm ddl auto create ) conf addProperties(extraProperties)

conf addXML(xml)

SchemaExport dbExport

try {

dbExport = new SchemaExport(conf dataSource getConnection()) // dbExport setOutputFile(path) dbExport create(false true)

} catch(SQLException e){

// TODO Auto generated catch block

e printStackTrace()

}

}

class hibernateGenerator {

}hibernate ftl

hibernate cfg xml

hibernate dialect SQLServerDialect

net sourcefe jtds jdbc Driver

jdbc jtds sqlserver:// databasename=struts SelectMethod=cursor

sa

sa

true

update

——

创建好数据库后就要利用groovy动态创建访问代码了 先看测试代码再看具体实现

public void testGroovy(){

Form form = formService get( )

List list = formAttributeService

getAttributeListByFormId(form getId()) form setFormAttributeList(list)

FormGenerator fg = new FormGenerator(form)

String groovycode = fg generator() ClassLoader parent = getClass() getClassLoader()

GroovyClassLoader loader = new GroovyClassLoader(parent)

Class groovyClass = loader parseClass(groovycode)

GroovyObject groovyObject = null

try {

groovyObject = (GroovyObject) groovyClass newInstance()

} catch(InstantiationException e){

e printStackTrace()

} catch(IllegalAccessException e){

e printStackTrace()

}

// map中key为formAttribute中描述该表单字段在数据库中的名称c_columnName

//具体情况根据formAttribute而定

Map map = new HashMap()

map put( name limq )

//调用insert方法插入数据

int c = (Integer) groovyObject invokeMethod( insert map)

//调用getAll方法获得所有动态表中的数据

Object o = groovyObject invokeMethod( getAll null)

List list =(List)o

Object obj = list get( )

try {

String tname = (String) BeanUtils getDeclaredProperty(obj name ) System out println(tname)

} catch(IllegalAccessException e){

e printStackTrace()

} catch(NoSuchFieldException e){

e printStackTrace()

}

//调用search方法查询动态表

List returnList = (List) groovyObject invokeMethod( search map)

for(Map map returnList){

//同理此处根据FromAttribute而定

System out println(map get( id )) System out println(map get( name )) System out println(map get( type ))

}

}FormGenerator 创建访问数据库Groovy代码

public class FormGenerator {

protected Map root = new HashMap()

private static Logger log = LoggerFactory getLogger(FormGenerator class)

protected String path

protected String packageName

private Form form

protected Configuration getConfig(String resource){

Configuration cfg = new Configuration()

cfg setDefaultEncoding( UTF ) cfg setClassForTemplateLoading(this getClass() resource)

return cfg

}

public FormGenerator(Form form){

this form = form

}

public String generator(){

String returnstr = null

Template t

try {

t = getConfig( /template ) getTemplate( FormService ftl ) //Writer out = new OutputStreamWriter(new FileOutputStream(new File(path)) UTF )

Writer out = new StringWriter()

t process(getMapContext() out) returnstr = out toString() log debug(returnstr)

} catch(IOException e){

e printStackTrace()

} catch(TemplateException e){

e printStackTrace()

}

return returnstr

}

@SuppressWarnings( unchecked )

Map getMapContext(){

root put( entity form) root put( insert SqlHelper buildInsertStatement(form)) root put( update SqlHelper buildUpdateStatement(form))

root put( insertParameter SqlHelper buildInsertparameter(form)) root put( updateParameter SqlHelper buildUpdateparameter(form))

root put( delete SqlHelper buildDeleteStatement(form)) root put( query   SqlHelper buildQueryStatement(form))

return root

}

}FormService ftl import java sql ResultSet import java sql SQLException import java sql Types import sprire RowMapper import sprire RowMapperResultSetExtractor import re dao DataSourceFactory import mons lang builder ToStringBuilder import mons lang builder ToStringStyle

class ${entity name动态表单?cap_first}Dao {

def insert = ${insert}

def delete = ${delete}

def update = ${update}

def int insert(entity){

def Object[] params = [${insertParameter}]

def int[] types=[Types VARCHAR ] return DataSourceFactory getJdbcTemplate() update(insert params types)

}

def int update(entity){

def Object[] params = [${updateParameter}]

return DataSourceFactory getJdbcTemplate() update(update params)

}

def int delete(String entityId){

def Object[] params =[entityId]

return DataSourceFactory getJdbcTemplate() update(delete params)

}

def search(entity){

${query}

println(query)

return DataSourceFactory getJdbcTemplate() queryForList(query)

}

}

lishixinzhi/Article/program/Java/hx/201311/25599

动态生成表单

项目有个需求,需要大量创建表单,实现数据的增删改查。于是思考有没有什么复用性高的解决方法。分析发现,可通过子组件和传入的数据实现。
(1)通过传入的数据动态生成table列表,用于数据展示:
也就是写一个子组件

(2)添加修改数据表单:

天翎myapps快速开发平台动态表单怎么样?

1、表单绘制:MyApps开发平台采用类似Word式的编辑页面,可借助表格控件自主配置,也可直接从Word或Excel中一键复制粘贴,另外左右托拉拽式和源码编辑模式也可以试试;

2、表单控件:平台自带了30种功能控件,拖拉拽就能快速调用;如果实在没有自己想要的控件,也支持自定义拓展并自由复用;

3、操作按钮:平台自带25种表单操作按钮,同样支持操作按钮自定义拓展;

4、表单规则:对字段提供固定值、多候选项、联动控制、接口读写和脚本计算等5种方式实现复杂业务逻辑的配置;对字段值的计算、权限、校验、隐藏、只读和打印提供配置化设置,操作按钮在动作执行前、执行时和执行后均可触发关联业务操作;

5、表单发布:Myapps开发平台采用热发布模式,后台保存前台刷新即生效,不需要像传统的软件开发那样做打包编译动作!表单配置信息都存储在XML文件中,通过复制粘贴即可轻松实现版本管理。

MyApps快速开发平台动态表单

关于动态表单和动态表单是什么意思的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 动态表单的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于动态表单是什么意思、动态表单的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:共同记账表格软件有哪些(记账表格用什么软件)
下一篇:无代码应用怎么开发软件(无需编程软件开发平台)
相关文章