我第一次使用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>
这显然是错误的方法。有人可以帮我这个忙吗?
答案 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>