使用远程链接gsp时如何将一个字段的值设置为参数

时间:2019-01-17 10:55:18

标签: grails groovy gsp

我第一次使用gsp,并且我要求在单击按钮时更新一个值。为此,我正在使用远程链接。

我下面的id为update_${test.id}的textArea

<g:textArea name="test" id="update_${test.id}" value="${test?.number}" disabled="${readonly ? true : false}" />

我需要能够将参数required的值设置为textArea内部的值。

<g:remoteLink action="updateTest" params="{required:\$('#update_${test.id}').val()}" update="updateOnClick" class="btn btn-default"><span class="icon-save"></span></g:remoteLink>

这显然是错误的方法。有人可以帮我这个忙吗?

3 个答案:

答案 0 :(得分:0)

下面的示例使用ajax通过序列化将所有表单字段传递给控制器​​,您可以通过打印文本区域的值来选择要执行的操作,就像我们下面所做的那样。

然后我们渲染一些文本,以更新屏幕上的div。

控制器

class TestStuffController {

    def index(){}

    def myAction() {
        println params.myTextArea
        render 'Updated'
    }
}

index.gsp

<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main">
    <script type="text/javascript">
        $( document ).ready( function() {
            $( '#myButton' ).on( 'click' , function (event) {
                $.ajax({
                    url: "${g.createLink( controller: 'testStuff', action: 'myAction')}",
                    type: "POST",
                    data: $( "form" ).serialize(),
                    success: function ( data ) {
                        $( '#myDiv' ).html( data );
                    },
                    error: function( j, status, eThrown ) { console.log( 'Error ' + eThrown ) }
                });
            });
        });
    </script>
</head>
    <body>
        <div>
            <div id="myDiv"></div>

            <g:form id="myForm">
                <g:textArea name="myTextArea" id="myTextArea" />
                <button type="button" name="myButton" id="myButton">Update</button>
            </g:form>
        </div>
    </body>
</html>

答案 1 :(得分:0)

这是一个g:link示例,其中传递了一个名称值对。要添加多个,只需在方括号内添加一个逗号和第二个名称值对。

<g:link role="button" class="btn btn-success" action="details" params="${['folderNumber' : instance.fileFolderNumber]}" title="Details">Details</g:link>

请注意,不建议使用g:remoteLink,我已改用JQuery进行Ajax调用。

答案 2 :(得分:0)

感谢您的所有建议。这是必需的。我可以根据您的建议达成解决方案。

    <g:javascript>
        function updateMethod(testId) {
            $.ajax({url: "${g.createLink( controller: 'testHandler', 
               action: 'testOnChange')}", 
               type: "POST",
               data: {'id': testId},
               success: function ( data ) {
                 $("#rowUpdated").show().delay(2500).fadeOut();
                 $("#updateFailed").hide();
              },
              error: function( j, status, eThrown ) {
                 $("#updateFailed").show().delay(2500).fadeOut();
                 $("#rowUpdated").hide();
                 console.log( 'Error ' + eThrown )
              }
           });
       }
    </g:javascript>
    <a href="javascript:void(0)" onclick="updateMethod('${test.id}');return false;" class="btn btn-default"><span class="icon-save"></span></a>