如何发送grails<;g:link>;参数作为职位

如何发送grails<;g:link>;参数作为职位,grails,gsp,Grails,Gsp,在我的应用程序中,当我使用 <g:link params=[:] /> 参数显示在我不想要的URL中。 是否仍然可以像POST方法那样发送参数而不在URL中显示 谢谢处理时变为,因此传递给glink的任何参数都将始终在url中可用。 如果您不想在url中添加标签,则必须使用表单。此处有一些标签 <g:link class="btn btn-success" id="class.id" onclick='UsingPost();'>SOME LABLE HERE

在我的应用程序中,当我使用

 <g:link params=[:] />

参数显示在我不想要的URL中。 是否仍然可以像POST方法那样发送参数而不在URL中显示

谢谢

处理时变为
,因此传递给glink的任何参数都将始终在url中可用。 如果您不想在url中添加标签,则必须使用表单。

此处有一些标签
<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>
函数UsingPost(){ jQuery.ajax({ 类型:'POST', 数据:{“模型”:${PleaseUsethemeodelYouhaveLoaded}}, url:“${createLink(操作:'save')}”, 成功:功能(数据、文本状态){ jQuery('#success').html(数据);}, 错误:函数(XMLHttpRequest、textStatus、errorshown){} }); }
是一个用于创建链接的标记,当您通过表单或ajax请求提交数据时,不存在带有POST参数、POST和GET(以及其他)的链接

取决于您可能生成ajax调用或表单的上下文

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

最简单的方法是使用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>
g:actionSubmit

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

您可以将
发送到控制器/操作,然后在操作中执行重定向

<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"
    }
}
发送
类TestController{
def索引(){
}
def formSubmit(长id){
//您可以使用id参数,也可以将其添加到flash范围
重定向操作:“索引”
}
}

因此,id参数将不会显示在结果url中。

除了使用表单,没有其他选项?您也可以尝试使用WebSocket。没有HTTP,有很多方法可以做到这一点。总有一些方法可以做到这一点。但这取决于使用情况,如果您只需要使用一些参数来点击一个方法,那么在这种情况下就不会这是一个非常好的选择。请注意,当使用链接创建HTTP POST请求时,用户可能会觉得有点奇怪,因为链接(以及HTTP GET)作为一个安全的幂等操作关联。因此,它可以执行多次,这会导致相同的结果(没有副作用).另一方面,HTTP POST根据定义不是幂等的,也不安全,因此没有人会认为它会执行多次(就像这里提到的save方法)。因此,底线是,不仅因为url中的属性,还应该对GET/POST进行区分。感谢您的d回复。在g:actionSubmit操作中,我们可以提供带参数的完整url吗?您可以使用
g:form
url
属性。参数应该作为表单中的隐藏字段传递。它应该是“elementId”而不是g:link中的“id”。