多行数据录入、提交的设计探讨

03-08-15 muziq
例子:发票录入,需要在一个高效的界面中录入发票的基本信息和明细信息(master-details),基本信息比如客户名称、日期等,明细信息比如商品名称、价格、数量等。

前提:通过Servlet+JSP实现,仅讨论交互、提交的设计,业务逻辑不在考虑之列。

问题集中在明细数据的处理上。

我们正在使用的方案:

页面:每条明细占一行,字段名通过JavaScript控制自动附加行号,比如item_name_1,price_1,quantity_1等;用户在最后一列按回车键增加一行

提交:Servlet收集表单里的明细字段通过循环读到数据对象中提交到后台方法。

这样做的优点是界面比较简单,缺点是jsp、Servlet、JavaScript太过臃肿,在Struts中无法通过FormBean进行映射,所以我正在考虑其它的方案。

你有什么好的建议?

sprsong
2003-08-15 19:47
每一行input的名字都相同。

在提交后用request.getParameterValues("")的到一个数组。

struts是应该可以处理这种情况的。

KillerMan
2003-08-17 12:16
是主细表提交的问题,对应数据库中一般存在主表主键对细表外键的约束关系。

一般是两种方案:

1,使用JS的html动态重写,将所有的细表信息在客户端缓存,最后和主表一次提交。

缺点:无法即时对细表信息进行校验。

2,每次细表的录入在服务器段进行缓存,如存入session、临时表、序列化等等。

缺点:每次都有一次交互过程,比较烦。

至于每行记录的命名各人有个人的规则,以不影响后台的解析规则为准。一般是同名form域,通过getParameterValues取出。

对于mutipart的混合form表单需要自己解析stream实现HttpServletRequest接口。

mellon
2003-08-18 10:11
这种想法基本上不可行。

我做了一个这样的东西,至今还在我机器上存在。

主从表关系的发票录入,呵呵。

我在我的机器上当时是Windows 2000 Server + IE5.0 ,在我实现了所有的功能包括录入的东西自动在页面上计算出总价,小计等。

呵呵,后来,windows98下windows2000下windowsXP下,同一种浏览器不同版本IE下,时不时会有不同的表现。哈哈哈哈,在所有问题暴露出来之前,在万劫不复,晚节不保之前,我闪。

当时有专门的测试组,专门的测试工具,在工具中可以在不同的浏览器,同一浏览器的不同版本之间任意切换可是,呵呵,连微软自己都不能保证IE6.0能兼容IE5.0的全部,其他的又怎能相信。

在新的公司里,我吐血推荐减少JavaScript使用,宁可用Swing做Applet。

mellon
2003-08-18 10:14
苦海无边,回头是岸。

不过也有好处,你即将成为一个HTML专家,JavaScript专家。

猜你喜欢
2Go 1 2 下一页