yang649459172 2012-11-05 17:27
浏览 240
已采纳

struts1 一次提交多个ActionForm

 [size=medium]JSP中有两个[b]actionform[/b]放在同一个form中,分别对应两个数据库表,现在用的是struts1,如何实现在同一个form中提交,交给后台的action处理?[/size]
  • 写回答

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上使用吗?