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

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,这样两个数据库表的操作无法放到同一个事务中。

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题