[size=medium]JSP中有两个[b]actionform[/b]放在同一个form中,分别对应两个数据库表,现在用的是struts1,如何实现在同一个form中提交,交给后台的action处理?[/size]
struts1 一次提交多个ActionForm
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- blogzhoubo 2012-11-05 21:22关注
1)
如果只提交一次form,然后调用对应的action,然后在action里面进一步把form中的值取出来,然后插入或者更新到两张数据库表中的话,可以采用下面的方式。复用已有的两个form bean,让其中的一个form bean继承自另一个form bean。比如:
public class MyForm2 extends ActionForm{
}
public class MyForm1 extends MyForm2{
}
然后在struts-config.xml里面只配置MyForm1即可。
public class MyAction extends Action {
public ActionForward execute(
ActionMapping mapping,ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
MyForm1 myForm = (MyForm1) form;
}
}最好还是单独定义一个form bean,里面包含所有的form项目,这样比较好理解,毕竟MyForm1和MyForm2没有继承关系。
2)
如果希望一次提交给两个action,然后两个action里面分别对各自的数据库表进行操作的话,可以采用下面的方式。在JSP中定义两个form,分别存储两个actionform对应的项目,然后只在其中的一个form里面设置提交按钮(type不要设置成submit),点击按钮的时候调用自定义的一个javascript方法,然后在这个function里面进行表单的提交。具体如下:
先通过ajax对第一个form进行submit,提交成功的话,再提交第二个form,因为第一个form是ajax异步提交,所以提交以后画面不会刷新,如果希望画面跳转的话,第二个form不采用ajax提交,而是采用传统的同步提交的方式。这样点击一次按钮,实际进行了两次提交,后台会串行调用两个action。因为是两个action,这样两个数据库表的操作无法放到同一个事务中。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 用visual studi code完成html页面
- ¥15 聚类分析或者python进行数据分析
- ¥15 逻辑谓词和消解原理的运用
- ¥15 三菱伺服电机按启动按钮有使能但不动作
- ¥15 js,页面2返回页面1时定位进入的设备
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
- ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?