extjs 同时提交grid和form的数据到数据库中!!!

extjs同时提交grid和form的数据到数据库中!!!,为什么我会感觉难,有几下的几个原因:1,前台怎么同时提交,注意是同时,(一个保存按钮,form,和grid中的... extjs 同时提交grid和form的数据到数据库中!!!,为什么我会感觉难,有几下的几个原因:
1,前台怎么同时提交,注意是同时,(一个保存按钮,form,和grid中的数据同时传走!)
2,后台action中,怎么获取数据并传给service,是form和grid分别在action中调用service方法吗?回答“是的”这种废话的就别回答了,欠扇!
3,就是最难的spring的事务控制,如果form或者grid的service方法插入数据库,有一个失败,两个方法全部回滚。(回答把它俩给写到一个service方法的,请你自己走开!)
4,我相信很多人都会碰见这种疑问!
最好有一个简单易懂典型完全契合问题的例子给贴出来!
展开
 我来答
罐头l桃子
2014-02-10 · TA获得超过167个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:149万
展开全部
你根本就没熟悉SSH+extjs的流程,我跟你说下流程,喝了酒,可能说的不太清:
1、首先提交时可以同时提交的,使用
form.submit({
params:{‘gridData’ : xxx}
});
其中form.submit函数本身就会把form提交上去,然后param配置项里的xxx就应该是你想要传的grid
当然 有前提条件,首先在form中每个textfield组件定义name为“对象名.属性名”的方式,如你提交的是用户信息,那么对象名可能是person,name值就是“person.age”,代表用户年龄。后台也要有成员变量person,这样struts就能接受person对象,直接可以拿到其中的年龄。
其次,你所谓的传递grid,其实是传递store中得数据,方法是可以先将store的数据拿出来,然后转成json传,将json串赋值给xxx就可以了,后台用request.getParameter("gridData");可以得到json串,再将其转化成对象,就可以得到对象的属性,也就是每条数据的信息了。你也可以在前台不转,直接传到后台,后台用数组接收,不过拿到每个属性不太好拿。
这样其实从前台拿到的是一个对象--------form传递过来的,还有一个应该是一个List集合,里面是grid的每一条数据,如果你想事务控制,我告诉真的就是写在一个service方法,因为你在action中调用的service方法的参数应该有form传过来的对象和那个List,在service当然就可以一起处理这些东西了,不明白就别说别人说的不对,你以为你就是对的啊。那是你没理解!

好吧,总结一下,前台传一个form对应的对象,再传一个grid的List,后台一个action同时接受这两个参数,然后调用service方法,此方法至少有两个参数,一个是form对应的对象,一个是grid对象的List,在service处理这两个参数,spring自动就会实现事务处理!

ExtJS 博大精深,不会就态度好点请教别人,别搞得自己像是不耻下问似,不一定有人理解,我也就是喝点酒,不然懂的人看你那几句白痴话就不愿意回答你。。。
追问
我早已经解决。这些不是给你看的,给以后不会的人看,看你拽的。
很多人会纳闷儿,我是什么情况下碰见的这种问题。是extjs中的card布局向数据库中插入数据时。card布局我就不多说了,可以避免页面跳转中的传值问题,一般都会涉及到多个form或者多个grid同时提交数据到数据库中。
解决方法是:
传值—————先提交一个form,其他的form和grid都当做参数,然后一起传入action中。
事务—————这种同时插入多个表的操作,必然会涉及到事务,如果一个表的插入操作失败,则数据全部回滚,不插入表中。所以,最好的办法是把action中获取到的前台数据同时提交到一个service方法中。事务一般不在action中写,因为action中本身就是逻辑,事务控制action则会令程序混乱。一般都写在service中。这些都是理论。我不会的时候我也明白。稍微懂行的都明白。下面给大家贴个例子。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式