【问题标题】:Open new window from GSP and forward to external URL从 GSP 打开新窗口并转发到外部 URL
【发布时间】:2013-08-06 03:42:09
【问题描述】:

我需要一些帮助。我正在将 Struts 应用程序转换为 Grails。

我正在尝试转换一个特定的操作。

  1. jsp 中有一个表单要求用户从下拉列表中选择一个客户,然后用户单击两个按钮之一。
  2. 当用户单击“查看报告”按钮时,onclick 事件会调用一个 JavaScript 函数,该函数会在 STRUTS 操作类上发出 window.open,传递选定的客户和选定的操作。
  3. 在操作类中,http 请求具有一些属性集 (request.setAttribute (..)),并执行到外部应用程序的转发。应用程序使用其中设置的属性进行登录。这是作为 POST 完成的。

我的问题是我不太确定如何使用 Grails 框架连接此流程。只要用户选择客户,单击操作提交按钮,从参数中读取所选客户,将我的属性添加到“请求”中,我就能够做到这一点,然后......我被卡住了。

如何打开一个新窗口? (尝试使用 Struts 完成的 javascript 方式)。

我还可以向控制器中的外部站点发出重定向,但是重定向是作为 GET 而不是 POST 完成的,并且重定向是在同一个窗口中完成的。任何帮助解决这个问题都会很棒。谢谢

【问题讨论】:

  • 那么,您已经尝试了来自 Struts 应用程序的现有 Javascript,对吧?它奏效了吗?你得到了什么错误?
  • 是的,原来的应用程序在 struts 中并且可以工作。我正在尝试用 GRAILS 完成同样的事情,需要一些指导。
  • 原始 Javascript 发生了什么?为什么它不起作用?有什么错误吗?

标签: grails struts


【解决方案1】:

您不能使用 POST 从服务器重定向用户。

我可以看到一些可能的解决方案:

1 .如果你不需要通过你的服务器来验证或请求一些数据,你可以使用这个:

<form action="http://someotherserver.com" method="post">

2 。创建一个控制器,重定向到您自己站点中的页面,并在此页面中进行处理,接收参数,然后使用 ajax 将用户重定向到另一个域。

【讨论】:

  • 谢谢,我会试试这个
【解决方案2】:

在 Grails 中,我使用了带有 'base' 属性的 createLink。

<g:createLink base="${params.dynamicURL}">Link</g:createLink>

我认为这样的事情会起作用,但你可以在这里研究它:http://grails.org/doc/latest/ref/Tags/createLink.html

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    相关资源
    最近更新 更多