我想根据select组件中选择的值刷新模板。
通常情况下,我想在视图中加载3个模板:
在我的GSP视图中,我有一个包含3个选项的选择组件:
如何动态更改代码中加载的模板:
<g:render template="*myTemplate*"/>
在select组件的onChange事件上? (如果我选择“A”,则加载templateA,如果我选择“B”,则删除templateA并加载templateB)
答案 0 :(得分: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}"
}