我有一个名为Screening的主控制器。 我为这个控制器构建了视图工作流程(例如:创建,编辑,列表,显示)。
在我的编辑视图中,我正在使用Jquery TABS(每个选项卡从与域关联的模板中获取内容)。总结一下:
Controller (Screening) -> Edit View -> tabs -> Eligibility Inclusion(tab - template/domain)
Eligibility Exclusion(tab - template/domain)
Demographics(tab - template/domain)
所以,在我的Screening编辑视图中,我使用formRemote添加模板部分,例如:
<div id="tabs">
<ul>
<li><a href="#demographics"><span>Demographics</span></a></li>
</ul>
<div id="demographics">
<g:formRemote url="[controller:'demographics', action:'update']" update="ajaxMessage" name="demographicsForm">
<span class="onvButton"><g:actionSubmit value="Save" action="update" /></span>
<g:render template="/demographics/editDemographics" model="[demographicsInstance:demographicsInstance]" />
</g:formRemote>
</div>
我想在屏幕视图上保留验证/保存,我该如何处理?
实际上,如果用户尝试保存(或验证失败),则会将其重定向到人口统计控制器/视图;怎么避免这个?我不希望用户被重定向。
是否有最佳方法可以在一个控制器/域中处理多种形式(具有模板/域关联)?
答案 0 :(得分:0)
听起来很有意思:
控制器:
def saveRemote = {
def remoteT1Instance = new RemoteT1(params)
if (remoteT1Instance.save(flush: true)) {
flash.message = "${message(code: 'default.created.message', args: [message(code: 'remoteT1.label', default: 'RemoteT1'), remoteT1Instance.id])}"
}
else {
flash.message = null
}
render(template: "remote", model: [remoteT1Instance: remoteT1Instance])
}
index.gsp:
<div id="updateArea">
<g:render template="/remoteT1/remote"/>
</div>
_remote.gsp(模板):
<g:if test="${flash.message}">
<div class="message">${flash.message}</div>
</g:if>
<g:hasErrors bean="${remoteT1Instance}">
<div class="errors">
<g:renderErrors bean="${remoteT1Instance}" as="list" />
</div>
</g:hasErrors>
<g:formRemote
name="editForm"
url="[controller:'remoteT1', action:'saveRemote']"
update="updateArea">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
<label for="nom"><g:message code="remoteT1.nom.label" default="Nom" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: remoteT1Instance, field: 'nom', 'errors')}">
<g:textField name="nom" value="${remoteT1Instance?.nom}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="prenom"><g:message code="remoteT1.prenom.label" default="Prenom" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: remoteT1Instance, field: 'prenom', 'errors')}">
<g:textField name="prenom" value="${remoteT1Instance?.prenom}" />
</td>
</tr>
<tr class="prop">
<td valign="top" class="name">
<label for="password"><g:message code="remoteT1.password.label" default="Password" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: remoteT1Instance, field: 'password', 'errors')}">
<g:textField name="password" value="${remoteT1Instance?.password}" />
</td>
</tr>
<div id='reply2'></div>
</tbody>
</table>
<div class="buttons">
<span class="button"><input type="submit" value="Register"/></span>
</div>
</g:formRemote>
如果我尝试使用: update =“[success:'reply2',failure:'updateArea']”在我的g:formRemote中,它听起来不起作用,我得到2 div(旧的和新的)。我认为这是一个javascript问题。
有人得到更好的东西吗?