remoteField
用途
创建一个文本字段,当它改变时,把它的值发送到远程的link. 默认情况下,参数发送给一个名称 'value'的里面, 这可以改变指定 'paramName' 属性.
示例
在 "shop"应用程序中的一个contrller:
class BookController {
def changeTitle = {
def b = Book.get(params.id)
b.title = params.value
b.save()
}
}
controller的使用方法:
<g:remoteField action="changeTitle" update="titleDiv" name="title" value="${book?.title}"/><div id="titleDiv">I'm updated with the new title!</div>
描述
属性
name
(必需) - 域的名称 .
value
(可选) - 域的初始化值.
paramName
(可选) - 发送到服务器上的参数名称.
action
(可选) - 链接的action名称,如果不指定默认的action将被提交.
controller
(可选) - 链接的controller
名称,如果不指定默认的controller
将被提交.
id
(可选) - link的id
update
(可选) -map 包含更新'success' 或者 'failure' 状态, 该元素由一个字符串更新而引起的failure events 将被忽略.
before
(可选) - JavaScript函数调用之前,远程函数调用,
after
(可选) - JavaScript函数调用之后,远程函数调用,
asynchronous
(可选) - 设置是否异步,同步. (默认为 true)
method
(可选) - 执行调用的方法. (默认为 "post")
事件
onSuccess
(可选) - 如果javascript 函数调用成功,将调用该函数.
onFailure
(可选) - 如果javascript 函数调用失败,将调用该函数.
on_ERROR_CODE
(可选) - JavaScript函数调用来处理特定的错误代 (如, "404="alert('not found!')")
onUninitialized
(可选) - JavaScript函数调用 AJAX引擎未能初始化.
onLoading
(可选) - 当远程函数加载响应时,调用 javascript这个函数.
onLoaded
(可选) - 当远程函数加载完全加载后,调用 javascript这个函数.
onComplete
(可选) - 当远程函数完全包含更新的内容时,调用javaScript的这个函数.
来源
Show Source
def remoteField = { attrs, body ->
def paramName = attrs.paramName ? attrs.remove('paramName') : 'value'
def value = attrs.remove('value')
if(!value) value = '' out << "<input type=\"text\" name=\"${attrs.remove('name')}\" value=\"${value}\" onkeyup=\"" if(attrs.params) {
if(attrs.params instanceof Map) {
attrs.params.put(paramName, new JavascriptValue('this.value'))
}
else {
attrs.params += "+'${paramName}='+this.value"
}
}
else {
attrs.params = "'${paramName}='+this.value"
}
out << remoteFunction(attrs)
attrs.remove('params')
out << "\""
attrs.remove('url')
attrs.each { k,v->
out << " $k=\"$v\""
}
out <<" />"
}