论坛首页 Web前端技术论坛

用XMLHTTP配合来实现前台动态表单的生成,并传输到后台,可

浏览 15005 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-06-16  
我的想法是这样了,感觉到有没有必要这样做了问题。

前台比如说有一个模板页。里面的表单元素是根据一个XML文件来动态配置生成。(如果页面多的话。就只配置多个的XML,只在XML文件里定义表单元素)
a.xml文件:
<root>
<type>text</type>
<name>phone</name>
<root>
用boolValue = xmlDocument.load(a.xml);这种方式加载到一个页面来。
然后。根据a.xml文件的表单类型与名称。在页面上用脚本方式生成一个表单
<input type="text" name="phone">

然后。当用户在前台填写值之后。再组成XML的字符串,
用var oReq = new ActiveXObject("Msxml2.XMLHTTP");
oReq.open("POST",this.u,false);
oReq.send(ooo.xml);
这种方式传到JAVABean。javabean只判断下这个格式有没有正确。如正确就把这个XML送到第三方接口()。

请问这种设计方案是否可行呢????????
   发表时间:2005-06-16  
这种方案肯定是可行的,这就是 XMLHTTP 的一个简单应用。对于数据格式的验证,只要不涉及到安全性,都可以放在客户端,在提交请求前用 JS 来做。
另外,如果对于 XML DOM 不熟悉,希望避免直接操作 DOM 的复杂性,可以使用 buffalo,你就不再需要知道 XML 了。
0 请登录后投票
   发表时间:2005-06-16  
dlee 写道
这种方案肯定是可行的,这就是 XMLHTTP 的一个简单应用。对于数据格式的验证,只要不涉及到安全性,都可以放在客户端,在提交请求前用 JS 来做。
另外,如果对于 XML DOM 不熟悉,希望避免直接操作 DOM 的复杂性,可以使用 buffalo,你就不再需要知道 XML 了。


目前是有具电信应用的项目。比如说:一个产品固定电话,他的功能有几百种,如果说一种操作功能用一个页面的表单来处理,我是觉得很麻烦。但用XML也要一个操作功能写一个XML的表单要素。这样也要写好多个XML文件。
我有考虑用数据库存要素,会不会更好点呢?/
0 请登录后投票
   发表时间:2005-06-16  
我觉得还是存在数据库里好,这样管理起来比较方便。在客户端需要这些数据的时候使用一个通用程序将数据封装在 XML 中传给客户端。当然,如果使用 buffalo,两边都只需要操作对象就可以了,不需要直接操作 XML。
0 请登录后投票
   发表时间:2005-06-16  
dlee 写道
我觉得还是存在数据库里好,这样管理起来比较方便。在客户端需要这些数据的时候使用一个通用程序将数据封装在 XML 中传给客户端。当然,如果使用 buffalo,两边都只需要操作对象就可以了,不需要直接操作 XML。


您好dlee.看的你说了buffalo。我不了解,刚才在网上找了相关资料。
http://www.amowa.net/buffalo/tutorial.html
感觉却是一个好东东,不知你有没有成功的案例代码贴一点上来。

目前,我也只熟悉不多的XMLHTTP。在网上一直找成功的案例,也没找到,只一些小例子。不知你对这样的前台WEB应用XMLHTTP有没有什么好的方法呢??

----------------------------------
还有个下面的问题,代回答,谢谢

就像以前用struts一样,我们所有提示消息都是用message来打印在页面上。一个用户问我。为什么这系统没有在删除时像以前一样有弹出框(以前是用脚本来做了。点击是就提交表单,否则不提交)
我说:我把消息显示在页面上不行吗?
他说:这样不直观。
如果说struts也要跟脚本相结合来写这样的小功能,是不是违反了让前台JSP代码量少的用意呢。
0 请登录后投票
   发表时间:2005-06-16  
你的想法和我的很相似,但是我最后还是使用了javascript template(jst),替代解析xml动态创建表单的方式。

xml的使用我觉得应该慎重,我谈谈我的看法:

1. 除非你还打算将表单的元素定义扩展为可以支持swing或者wap,否则没有多大的必要一定要通过xml方式来定义表单元素。解析xml后无论是通过document.createElement或者document.write 的方式都不直观而且难以调试。这还没有考虑性能的因素。

2. 再或者可以由xslt来构造显示,但我觉得xslt过于复杂,学习成本太高,更难于调试,如果大量使用的话,更是要慎之又慎。

3. 如果表单的设计可能需要用户的参与或者修改的话,一般的做法还是提供一个rich editor来操作,此时xml不直观,反复的解析xml是很无益的浪费。

buffalo 很不错,和jsonrpc各有优势,jsonrpc以ECMAScript标准的子集为基础,buffalo以burlap协议为基础。buffalo因为xml而显得更符合ajax的血统。不过jsonrpc在整个架构设计上更胜一筹。
0 请登录后投票
   发表时间:2005-06-16  
醒来 写道
你的想法和我的很相似,但是我最后还是使用了javascript template(jst),替代解析xml动态创建表单的方式。

xml的使用我觉得应该慎重,我谈谈我的看法:

1. 除非你还打算将表单的元素定义扩展为可以支持swing或者wap,否则没有多大的必要一定要通过xml方式来定义表单元素。解析xml后无论是通过document.createElement或者document.write 的方式都不直观而且难以调试。这还没有考虑性能的因素。

2. 再或者可以由xslt来构造显示,但我觉得xslt过于复杂,学习成本太高,更难于调试,如果大量使用的话,更是要慎之又慎。

3. 如果表单的设计可能需要用户的参与或者修改的话,一般的做法还是提供一个rich editor来操作,此时xml不直观,反复的解析xml是很无益的浪费。

buffalo 很不错,和jsonrpc各有优势,jsonrpc以ECMAScript标准的子集为基础,buffalo以burlap协议为基础。buffalo因为xml而显得更符合ajax的血统。不过jsonrpc在整个架构设计上更胜一筹。


现在公司也有人打算用xslt,我是觉得成本太高,我觉得在页面我们只要关心与数据相关的东东。至于整个模板页用jsp(里面只有html,就好比struts的tiles )又怎么样了。现在一直是没有找到解决前台表单自动生成的问题。

还有,现在XMLHTTP我要应用在EJB上(就是要远程调用),性能上,速度上,我也没测试过。也不好评估出来到底要怎么做比较好?????
0 请登录后投票
   发表时间:2005-06-16  
摆渡人 写道
现在公司也有人打算用xslt,我是觉得成本太高,我觉得在页面我们只要关心与数据相关的东东。至于整个模板页用jsp(里面只有html,就好比struts的tiles )又怎么样了。现在一直是没有找到解决前台表单自动生成的问题。

还有,现在XMLHTTP我要应用在EJB上(就是要远程调用),性能上,速度上,我也没测试过。也不好评估出来到底要怎么做比较好?????


完全可以体会你的苦处,我也一直探索对表单自动生成的实现。这个版开得好啊。

xmlhttp的性能是可以保证的,久经考验了。更多的考量我觉得应该放在调试的成本上。Ajax在调试上还有许多需要完善。也希望你的同事一定要先了解更多xslt以后再做决定。
0 请登录后投票
   发表时间:2005-06-16  
醒来 写道


完全可以体会你的苦处,我也一直探索对表单自动生成的实现。这个版开得好啊。

xmlhttp的性能是可以保证的,久经考验了。更多的考量我觉得应该放在调试的成本上。Ajax在调试上还有许多需要完善。也希望你的同事一定要先了解更多xslt以后再做决定。


上面dlee有说过用数据库。可能会更好吧。我就连生成表单也先用xmlhttp方式生成。
表里头存两个字段:表单的type与name.
前台循环产生。
而不用XML。
0 请登录后投票
   发表时间:2005-06-16  
dlee 写道
我觉得还是存在数据库里好,这样管理起来比较方便。在客户端需要这些数据的时候使用一个通用程序将数据封装在 XML 中传给客户端。当然,如果使用 buffalo,两边都只需要操作对象就可以了,不需要直接操作 XML。


我做了一个demo.但用数据库有个问题。没办法判断是那种类型的表单.
这个变成在数据库里要多存,是input ,select,还是其它的东东。。

有没有更好的解决类型问题。不然的话。前台导入只能用XML先显示。

我的方法如下:
先从数据库里取出值.这时,在类型上怎么解决更好呢。
<form name="myform2" id="myform"  method="post" action="">
   <%
       while(it.hasNext()){
              inputBean rs = (inputBean)it.next();
  %>
<%=rs.getTitle()%>:<input name="<%=rs.getName()%>" type="<%=rs.getType()%>" value="" onchange="setValue(this.name,this.value)"><br>
<%
  }
%>
</form>
然后。。其实在点击时,在脚本上已经触发脚本onchange="setValue来存值。格式是XML的。然后用xmlhttp的send();发送到java.
其XML格式是
<?xml version="1.0" encoding="utf-8"?>
<data type="form">
<v n="' + str1 + '" v="' + str2 + '" />
<v n="' + str1 + '" v="' + str2 + '" />
......................其中n是字段的名称,v 为字段的值传到后。但首先n这个东东
在与后台定义上总觉得不怎么好。(估计要与数据库的字段名一一对应,才有办法存值)????
</data>

这种方式如何。。。。。。。。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics