动态更改视图中的 GSP 模板



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

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

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

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

  • 一个
  • C

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

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

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

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

然后,根据所选选项,我们呈现适当的模板并更新视图中的myDivdiv。

普惠制:

<!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}"
}

最新更新