0

我有一个按钮可以更新 fieldset 或 td 之类的标签以显示渲染的模板:

   <td id="tdBtn"><g:submitToRemote name="showFieldSet" value="Edit" update="fieldSet" action="setPwdTxtVisible" onComplete="hideBtn(3)" /></td>

 <fieldset id="fieldSet">
<-- this will be the section where the template will be rendered upon btn click name="showFieldSet" -->

    </fieldset>

那个行动:

def setPwdTxtVisible=
    {
        def employeeId= params.employeeId
        MySession session = MySession.getMySession(request, params.employeeId)
        session.profileInstance.isEditPwd = true
        render(template:"/layouts/passwordProfile")

    }

有没有办法在 def 方法而不是按钮中进行更新?问题是当保存数据时验证失败时,页面被重新加载并且更新的 td 再次返回到没有呈现的模板。我想更新 catch 内的 td (在 SAVE 方法中的 try catch 语句中),以便模板仍然存在。喜欢这样编码:以及如何在不使用 javascript 的情况下访问第一个位置的 td?这可能吗?

 def setPwdTxtVisible=
    {
        def employeeId= params.employeeId
        MySession session = MySession.getMySession(request, params.employeeId)
        session.profileInstance.isEditPwd = true
        render(template:"/layouts/passwordProfile")
        update fieldset //<<------

    }
4

1 回答 1

0

如果没有 javascript,您将无法做到这一点。控制器无权访问 DOM。

修改您的控制器操作,使其返回失败或成功消息,然后您可以在更新方法中使用映射 - update="[success: 'message', failure: 'error']"

如果你这样做,它基本上说如果你的 AJAX 调用失败,它会在名为 error 的 div 上呈现客户端的错误。

您还可以通过 http 状态消息控制错误消息的流向,因此在您的 submitToRemote 方法中,您可以添加一个 on501="error" ,它使用您的 501 的内容更新错误 div 或使用特定的服务器操作。

http://grails.org/doc/latest/ref/Tags/submitToRemote.html

你的控制器不应该操纵 DOM 元素。

于 2012-07-26T21:56:37.343 回答