动态地将表格的目标有条件地设置为iframe

时间:2013-06-25 17:59:44

标签: java javascript spring spring-mvc dojo

我正在使用spring mvc和dojo开发一个web项目。我有一个独特的问题。这就是我在做的事情:

  1. 将表单提交给控制器并在控制器中生成pdf。在回复中设置pdf
  2. 表单的目标是iframe,以便pdf在提交后显示在表单中。
  3. 这很完美。 现在,我的问题是:
    我正在使用spring mvc validator对表单进行验证,如果有错误,我必须返回错误消息的同一页面。 问题是将这两种方法结合起来。如果我发现错误并返回返回视图,因为表单的目标是iframe,响应会显示在iframe中,显然我不想要(我想显示新页面)并且如果一切都很好,我必须在响应中设置pdf并使用目标在iframe中显示它。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您没有提及是否使用ajax提交form。如果它是ajax那么它将是直截了当的,我认为你不是。

  

如果您正在进行正常的form提交,那么

  1. 请勿target将表单提交给iframe

    这解决了您的问题,但它引入了一个新问题,处理PDF响应。

  2. 当您的表单提交通过validation而不是返回PDF时,会返回相同的view,但会返回一些javascript代码,dojo您的情况,在页面底部弹出iframe url指向pdf流。

    如果您使用的是Spring MVC 3.1,则可以使用Spring MVC Flash Attributes在表单处理方法和PDF服务方法之间共享任何数据,如果您使用的是先前版本的{{1}您可以使用Spring或捕获Session网址中的信息,以便在这两种方法之间共享任何信息。

答案 1 :(得分:0)

如果你可以使用AJAX:

使用AJAX提交表单并返回PDF的URI。然后,如果验证正常,则将iframe的源设置为返回的URI。

如果不能或不想使用AJAX:

再次返回同一页面,但这次是iframe的来源已经设置为PDF,如果验证还可以。