Grails获得了原始控制器的URL

时间:2016-01-17 17:49:14

标签: java spring grails

我有一个表示abc.com/somecontroller?someparam=1的网址,用于呈现表单。提交表单将表单参数发送到/ajaxAction

我有没有办法得到这个abc.com/somecontroller?someparam=1(即表格网址?)

我更感兴趣的是从表单的网址中获取someparam值。

PS:以上网址abc.com/somecontroller?someparam=1是动态生成的,所以我无法访问它。 request.forwardURI会给我/ajaxAction(即表单中的操作的网址,而不是表单的网址)。

编辑: 我无法控制表单,因为它也是动态的,用户有数百个模板可供选择。每个模板都有不同的编号。的领域。 所以如果我更喜欢其他方式来获取URL。

3 个答案:

答案 0 :(得分:1)

为什么不在表单中使用javascript并使用GET参数添加到ajax请求数组? (或使用生成形式的动作的URL)

您可以从原始请求获取它们。通过this脚本。

答案 1 :(得分:0)

在渲染表单的GSP时,您可以这样做:

<强> myaction.gsp

  <?php 
    $_category_detail=Mage::registry('current_category');
    echo  $_category_detail->getName(); //gives current  category name
    echo $_category_detail->getId(); //gives current category id
?>

因此,当您呈现GSP时,<html> <body> <!-- Your content --> <script> var paramsString = '${params.collect { k, v-> "$k=$v" }.join​​​​​​​​​​​​​​​​​​​​​​("&")​​​ }'; </script> </body> </html> 标记将具有类似内容(对于网址script

abc.com/somecontroller?someparam=1&foo=2

现在,在您的AJAX代码中,您可以将该字符串作为查询参数传递:

var paramsString = 'someparam=1&foo=2';

现在,在您的ajax控制器操作中,您只需执行$.ajax({ url: '/ajaxAction?' + paramsString /* rest of the AJAX code */ });

修改

好吧,我刚才意识到你没有我上面提到的任何GSP内容。只需像这样执行AJAX调用:

params.someparam

$.ajax({ url: '/ajaxAction' + location.search /* rest of the AJAX code */ }); 将为您提供直接字符串:location.search

答案 2 :(得分:0)

我最终使用flash来存储someparam

在我用于在abc.com/somecontroller?someparam=1呈现表单的控制器中,我使用flash作为:

flash.put("someparam", params.someparam)

这是该问题的快速解决方法。我觉得这在我无法控制gsp的情况下会很好用。

如果有人发现任何问题,请另外发表评论,我会将此标记为答案。