3

在 GSP(Groovy 服务器页面)中,我用于在服务器端调用之后<g:submitToRemote update="...">更新 a 。<div>

根据标签的文档和网络上的其他来源,<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 上。
我错过了什么?- 谢谢

4

2 回答 2

4

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

如果您在中指定替代操作,它会起作用g:submitToRemote- 即,

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

如果这个动作提供了一个模型- 即,

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

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

$message

或者,该动作可以使用该render方法 - 像这样,

def ajaxAction = { render 'foo' }

我会将这个问题留待一段时间,以防可能有其他回复,如果没有,我会接受这个答案作为解决方案。

谢谢

于 2010-12-01T15:56:27.310 回答
3

我认为问题在于您没有为您的操作指定控制器。尝试将 controller="..." 添加到您的 g:submitToRemote 标记中。或者至少在 g:form 中指定它。

我确定<div>不需要包装。

于 2010-12-01T08:20:09.503 回答