2012-07-26 24 views
0

我有一個按鈕,更新標籤像字段集或TD顯示渲染模板:的Grails的形式更新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語句中),以便模板仍然存在。像這樣編碼:我如何訪問td在第一個不使用JavaScript的地方?這可能嗎?

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

    } 

回答

0

你不能這樣做沒有JavaScript。控制器無權訪問DOM。

修改您的控制器操作,因此返回失敗或成功的消息,那麼你可以使用在更新方法的地圖 - 更新=「[成功:‘消息’,失敗:‘錯誤’]」

如果你這樣做,它基本上說,如果你的AJAX調用失敗,它會在客戶端發生錯誤,稱爲錯誤。

您也可以通過http狀態消息來控制錯誤消息的流向,所以在submitToRemote方法中,您可以添加一個on501 =「error」,它用501的內容更新錯誤div或使用特定的服務器行動。

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

你的控制器不應該操作DOM元素。