如何发送grails <g:link> params作为POST </g:link>

时间:2014-07-24 06:07:44

标签: grails gsp

在我的应用程序中使用

 <g:link params=[:] />

params显示在我不想要的URL中。 无论如何发送params而没有像我们通过POST方法那样在URL中显示?

谢谢

5 个答案:

答案 0 :(得分:3)

g:link是一个用于创建链接的标记,当您通过表单提交数据时,没有使用POST参数链接,POST和GET(和其他人一样)methods可用ajax请求。

取决于您可以生成ajax调用或执行此操作的表单的上下文。

<g:form controller="myController" action="myAction">
  <g:hiddenField name="myField" value="myValue" />
  <g:submitButton name="Submit" value="Submit" class="lnk" />
</gform>

答案 1 :(得分:1)

<g:link class="btn btn-success"  id="class.id" onclick='UsingPost();'>SOME LABLE HERE </g:link>
<script type='text/javascript'>
function UsingPost(){
    jQuery.ajax({
        type:'POST',
        data:{"model":${pleaseUseTheModelyouHaveLoaded}"}, 
        url:'${createLink(action: 'save')}',
        success:function(data,textStatus){
        jQuery('#success').html(data);},
        error:function(XMLHttpRequest,textStatus,errorThrown){}
        });
}
</script>

答案 2 :(得分:0)

关于处理的

<g:link></g:link>变为<a href=""></a>,因此传递给glink的任何参数将始终在URL中可用。 如果你不想在网址中,那么你将不得不使用一个表格。

答案 3 :(得分:0)

最简单的方法是使用jquery:

<g:link id="my_link">This is my link</g:link>

<script type='text/javascript'>
    $('#my_link').click(function() {
        $.post('/url_for_post_request');
    });
</script>

Grails中还有remoteLink功能,但已弃用,因此最好避免使用此功能。

另一种选择是使用表格。重要的是,您可以在某个地方定义表单,并在网站的任何位置放置提交按钮 - 您只需使用form的{​​{1}}属性:

g:actionSubmit

<g:form method="post" action="..." name="form-name">...</g:form>

g:actionSubmit

答案 4 :(得分:0)

您可以将<g:link params=[:] />发送给控制器/操作,然后在操作中进行重定向。

<g:link action="formSubmit" params="[id:3]">send</g:link>

class TestController {

    def index() {
    }

    def formSubmit(Long id) {
        // you can use the id param, or add it to flash scope
        redirect action: "index"
    }
}

因此id参数不会显示在生成的URL中。