代码之家  ›  专栏  ›  技术社区  ›  robbbert

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

  •  3
  • robbbert  · 技术社区  · 15 年前

    在GSP(Groovy服务器页面)中,我使用 <g:submitToRemote update="..."> <div> 在服务器端呼叫之后。

    根据标签上的 documentation <分区> 可以任意放置在页面上。然而,在我的证词中,我发现 <分区> 需要包围 <g:submitToRemote> 标签。

    如果是的话 <分区> 将更新一些“随机”内容(即。, 它的形状 <g: 提交远程> 标签)。

    <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上。
    我错过了什么?-谢谢

    2 回复  |  直到 15 年前
        1
  •  4
  •   robbbert    15 年前

    根据我的证词, g:submitToRemote action 属性必须 指向 电流控制器的电流动作 (因为这将插入/复制当前视图 进入之内

    如果指定 候补 g: 提交远程

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

    如果此操作提供 模型

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

    然后需要有一个相应的普惠制,在这种情况下,应该说明,

    $message
    

    render 方法-像这样,

    def ajaxAction = { render 'foo' }
    

    我会让这个问题开放一段时间,以防有其他的回应,如果没有,将接受这个答案作为解决方案。

    谢谢

        2
  •  3
  •   Hoàng Long    15 年前

    我认为问题在于你没有为你的行为指定控制器。尝试将controller=“…”添加到g:submitToRemote标记中。或者至少在g:form中指定它。

    <div> 不需要包装。