【问题标题】:Dynamically change GSP template in view在视图中动态更改 GSP 模板
【发布时间】:2017-05-15 20:49:15
【问题描述】:

我想根据选择组件中选择的值刷新模板。

通常,我想在视图中加载 3 个模板:

  • _templateA.gsp
  • _templateB.gsp
  • _templateC.gsp

在我的 GSP 视图中,我有一个包含 3 个选项的选择组件:

  • 一个
  • B
  • C

如何动态更改代码中加载的模板:

<g:render template="*myTemplate*"/>

在选择组件的 onChange 事件上? (如果我选择“A”,则加载模板A,如果选择“B”,则删除模板A并加载模板B)

【问题讨论】:

    标签: javascript jquery grails


    【解决方案1】:

    在下面的示例中,我们使用序列化将表单内容发布到/myController/myAction 操作。

    然后根据选择的选项,我们渲染适当的模板并更新视图中的myDiv div。

    gsp:

    <!DOCTYPE html>
    <html>
    <head>
    <script type="text/javascript">
        $( document ).ready( function() {
            $( '#mySelect' ).on( 'change' , function (event) {
                $.ajax({
                    url: "/myController/myAction",
                    type: "POST",
                    data: $( '#myForm' ).serialize(),
                    success: function ( data ) {
                        $( '#myDiv' ).html( data );
                    },
                    error: function( j, status, eThrown ) { console.log( 'Error ' + eThrown ) }
                });
            });
        });
    </script>
    </head>
    <body>
    <g:form name="myForm">
        <g:select name="mySelect" from="${['A', 'B', 'C']}" />
    </g:form>
    
    <div id="myDiv"></div>
    </body>
    </html>
    

    控制器:

    def myAction() {
        render template: "template${params.mySelect}"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      相关资源
      最近更新 更多