微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Grails / AJAX:使用g:submitToRemote更新页面中的任意区域

在GSP(Groovy服务器页面)中,我正在使用< g:submitToRemote update =“...”>更新< div>在服务器端调用之后.

根据标签documentation和网络上的其他来源,目标< div>可以任意放置在页面上.然而,在我的测试中,我发现< div>需要包围< g:submitToRemote>标签.

如果没有,则< div>将使用一些“随机内容(即围绕< g:submitToRemote>标记的表单部分)进行更新.

请考虑以下GSP代码

<html>
<head>
    <g:javascript library="prototype" />
</head>
<body>

<div id="updateMe_NOT_WORKING">${message}</div>

<g:form>
    <div id="updateMe_WORKING">
        <g:submitToRemote value="Click Me"
            action="someAction" update="updateMe_NOT_WORKING" />
    </div>
</g:form>

</body>
</html>

这是在Grails 1.3.4上.
我错过了什么? – 谢谢

解决方法

根据我的测试,g:submitToRemote的action属性不能指向当前控制器的当前操作(因为这会将当前视图插入/复制到当前视图中).

如果你在g中指定一个替代动作,它可以工作:submitToRemote – 即,

<g:submitToRemote value="Click Me"
    action="ajaxAction" update="updateMe" />

如果此操作提供模型 – 即,

def ajaxAction = { [message: 'foo'] }

那么需要有一个相应的GSP – 在这种情况下,应该说明,

$message

或者,动作可以使用渲染方法 – 像这样,

def ajaxAction = { render 'foo' }

我会暂时保留此问题,以防可能有其他响应,如果没有,将接受此答案作为解决方案.

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐