Если вы согласны с использованием кнопки вместо ссылки, это становится тривиальным с помощью g: submitToRemote. Но если это должна быть ссылка, вы можете сделать что-то ужасное, как это:
Просмотры / электронная почта / index.gsp:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sample title</title>
<g:javascript library="prototype" />
</head>
<body>
<g:form name="theForm">
Email: <g:textField name="emailAddr" />
<!-- Here comes the ugly -->
<a href="#" name="submit"
onclick="new Ajax.Updater('resp','${createLink(action:'addEmail')}',{asynchronous:true,evalScripts:true,parameters:Form.serialize(document.theForm)});return false">
Submit Form
</a>
</g:form>
<div id="resp">
</div>
</body>
</html>
Контроллер электронной почты:
class EmailController {
def index = { }
def addEmail = {
if(params?.emailAddr) {
render "${params.emailAddr}"
}
else {
render "No Email Entered"
}
}
}
Пара вещей, на которые стоит обратить внимание, если вы настроите это:
* первый аргумент «resp» Ajax.Updater - это идентификатор div, который вы хотите обновить
* в команде Form.serialize (document.theForm) 'theForm' должно соответствовать имени, которому вы назначаете форму.