关于动态生成的设计思路

s_liangchao1s 2008-09-11 11:47:18
大体实现要求:数据库里的数据添加一条记录,在页面就动态生成相应控件。
比如:数据库的字段分别为(名称,控件类型,默认值,起始值,步长,最大值)
我存进数据分别为:文件大小,select,200,100,100,500
这样就在jsp页面生成一行表格,表格就生成了一个select控件option值为100---500并且默认选中200

问题:也许根据一条记录能够生成相应的控件。但是控件肯定需要些约束条件,那样就肯定需要js判断。但js判断也不能
去动态生成吧。。
希望大家能集思广益帮忙思考下,或者有更好的设计思路。但宗旨就是动态生成
...全文
156 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuixiuqin1954 2008-09-12
  • 打赏
  • 举报
回复
关注中,不会,所以不敢瞎说……
s_liangchao1s 2008-09-12
  • 打赏
  • 举报
回复
嗯 谢谢worm_oz 和 其余几位兄弟的建议,想想估计就是像worm_oz 兄所说的,只能尽可能满足大部分校验了。。。
再挂一天 看看其他朋友的建议, 明天结贴!
liyang_nurse 2008-09-12
  • 打赏
  • 举报
回复
数据库及java相关技术讨论群57262558
kongsufeng1 2008-09-12
  • 打赏
  • 举报
回复
member.make_select
s_liangchao1s 2008-09-12
  • 打赏
  • 举报
回复
嗬嗬 有思路和想法都说说 我看完大家建议后 找个折中的办法去实现!
kingkingzhu 2008-09-11
  • 打赏
  • 举报
回复
每个控件写个类 关于控件需要些约束条件的可以重载添加
具体生成函数再根据 控件类型 字段去调用生成相应控件的类
不是很懂 帮顶
笨沙发 2008-09-11
  • 打赏
  • 举报
回复
写个自定义标签吧
mengweilil 2008-09-11
  • 打赏
  • 举报
回复
单独写个程序,读数据库,然后生成jsp文件,直接丢到app server的自动部署目录不就得了?

handong890 2008-09-11
  • 打赏
  • 举报
回复
我以前做过一个列表是这样的 每次往数据库加条记录页面列表也加条(DWR实现) 然后每条也有单独的验证 有楼主说的验证问题我在列表前加了一个名字一样的隐藏域 名字一样 我获取他得到记录条数我每次加的条记录名字后都有个参数从0开始每次加一
应为前面我可以获取一共多少条所以可以循环验证 而且我记得还有个选项是放大镜 这样也可以正常实现完全没问题 你说的不同的验证不是太理解,可以调用JS传你的验证参数进那个方法这个方法行么?
worm_oz 2008-09-11
  • 打赏
  • 举报
回复
无规律的逻辑判断,除了使用自定义逻辑代码,没有很好的办法。ASP.NET提供的Validator,不是也有个CustomValidator允许开发者自己写个函数来验证数据嘛。

当然还是可以设计一些常用的Validator函数放在一个公共的JS文件里面,配合动态生成的事件处理代码,能够满足大部分简单的校验就行了,具体到你举的例子:
“而且页面初始化的时候开始日期要显示当天日期”加个初始值字段可以解决
“需要结束日期大于开始日期”这个可以用类似ASP.NET的CompareValidator
deanchun 2008-09-11
  • 打赏
  • 举报
回复
要是能用dwr,直接将数据库的数据返回,然后到页面的回调函数进行判断。
s_liangchao1s 2008-09-11
  • 打赏
  • 举报
回复
比如说 我现在要生成两个日起 一个开始日期 包含年月日 一个结束日期 也是年月日
这样的js判断需要结束日期大于开始日期 而且页面初始化的时候开始日期要显示当天日期

类似这种判断挺多的 也没有规律和通用性。。。这样js没法写全
s_liangchao1s 2008-09-11
  • 打赏
  • 举报
回复
对阿 所以我要说 这样得写多少种验证阿。。。。
worm_oz 2008-09-11
  • 打赏
  • 举报
回复
你的JS函数也能写成通用的啊,比如数字最大值和最小值的做一个validateRange(max, min),按照传入的参数来验证,传(10, null)表示>10,传(null, 9)表示<9,一般validator框架都是这么做的
s_liangchao1s 2008-09-11
  • 打赏
  • 举报
回复
期待答案!
s_liangchao1s 2008-09-11
  • 打赏
  • 举报
回复
如楼上几位说的 我也想过 就是把js存到数据结构中

但是原因是:每当你生成一个控件就需要一个新的js验证 比如有的需要验证>10 有的验证 <9等等 那样js怎么写也概括不了这些情况
worm_oz 2008-09-11
  • 打赏
  • 举报
回复
JS作为CLOB字段保存到数据库,或者读取properties文件,这两种方法都能解决问题,其实质是把零散的代码段动态组合到一个HTML文件中,缺点是不直观,维护起来比较麻烦

个人喜欢的方法,是在一个.js文件里面包含所有的逻辑代码,然后把这个.js文件以<script language="javascript" src="x.js"></script>方式连接到JSP文件里,然后根据你的项目需求,既可以用Javascript动态绑定function到需要触发逻辑代码的HTML表单元素的相应事件上(需要对Javascript有一定了解,因为IE和FF的实现稍有不同),也可以在生成HTML表单元素的代码里直接绑定。这样做的好处是,逻辑代码集中在一个JS文件里面,而且独立于JSP代码,维护起来很方便。

例如我们有个JS文件,其中validatorNotNull函数,用来判断传入的HTML元素的值不能为空,我们在JSP代码里面连接这个文件,然后有下列两种方法:
1)假设我们想把此函数绑定到所有的input text元素的onchange事件,可以用类似下面的Javascript代码动态绑定事件:
var allInputs = document.getElementsByTagName('input');
for (int i = 0; i < allInputs.length; i++)
{
if (allInputs[i].type == "text") allInputs[i].onchange = validatorNotNull;
}

2)在JSP里面生成HTML表单元素的时候直接绑定事件响应代码,假设你在数据库里面保存了某个字段NotNull,读取到一个Bean的属性notNull里面,代码应该类似下面:
<input type='text' name='xxx' id='yyy' onchange='<%=xbean.notNull ? "validatorNotNull()" : ""%>'></input>
baobao28 2008-09-11
  • 打赏
  • 举报
回复
用ajax来实现吧
Coolfatman 2008-09-11
  • 打赏
  • 举报
回复
这种东东玩多了,
把js作为数据也存入数据库才有可能绑定。

另一种做法是配置xml或属性文件去和该条记录绑定,其实是换汤不换药。
worm_oz 2008-09-11
  • 打赏
  • 举报
回复
JS可以动态绑定到事件
加载更多回复(4)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧