首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails formRemote -如何避免在多表单上重定向?

问Grails formRemote -如何避免在多表单上重定向?
EN

Stack Overflow用户
提问于 2011-04-06 23:57:58
回答 1查看 1.9K关注 0票数 0

我有一个名为Screening的主控制器。我有这个控制器的构建视图工作流(例如:创建、编辑、列表、显示)。

在我的编辑视图中,我使用了Jquery选项卡(每个选项卡都从一个与域关联的模板中获取内容)。所以总结一下:

代码语言:javascript
复制
Controller (Screening) -> Edit View -> tabs -> Eligibility Inclusion(tab - template/domain)
                                               Eligibility Exclusion(tab - template/domain)
                                               Demographics(tab - template/domain)

因此,在我的筛选编辑视图中,我使用formRemote添加模板部件,例如:

代码语言:javascript
复制
<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> 

我想在筛选视图上保留验证/保存,我该如何处理?

实际上,如果用户尝试保存(或者如果验证失败),他们会被重定向到人口统计控制器/视图;如何避免这种情况?我不希望用户被重定向。

是否有在一个控制器/域中处理多表单(具有模板/域关联)的最佳方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-12 02:50:25

这听起来像是在做这样的事情:

控制器:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<div id="updateArea">
  <g:render template="/remoteT1/remote"/>
</div>

_remote.gsp (模板):

代码语言:javascript
复制
<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>

如果我尝试在g:formRemote中使用: update="success:'reply2',failure:'updateArea'“,它听起来不起作用,我得到2div(旧的和新的)。我认为这是一个javascript问题。

有没有人拿到更好的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5569408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档