2013-03-22 99 views
0

對,我似乎是做這個權利,它的如此簡單,真的不應該有任何缺失,但對於我的生活,我不明白爲什麼它不工作,我有一個遠程鏈接像這樣我的列表視圖: -grails簡單重定向不工作

<g:remoteLink action="makeReady" id="${testExecQueueInstance.id}">X</g:remoteLink> 

印刷準備在這一點上除了空從我想讓它顯示選擇的線上,因此控制器只有這樣它: -

def makeReady(Long myid){ 
    redirect(action:"show", id:myid) 
} 

演出的動作是格雷爾創造的沼澤標準表演,只有朗德被傳入......

爲什麼不能正常工作?我錯過了什麼愚蠢的東西,我會在接下來的幾天裏把自己踢出去?

+0

什麼是正在發生的實際的錯誤?重定向發生在錯誤的url上嗎? Ajax調用沒有被創建?是否正在執行makeReady控制器操作? – 2013-03-22 17:14:01

+0

什麼都不是真的發生......( – MorkPork 2013-03-23 19:52:16

+0

所以,即使Ajax調用不工作? – 2013-03-24 04:36:06

回答

0

<g:remoteLink發出ajax請求,並且您的頁面已經呈現,服務器無法重定向它,它已經顯示。

有兩種方法,使其工作:

  • 使用標準鏈接
  • 響應與JSON/JAVASCRIPT,並就客戶端重定向。

對於第二個選項,這將是這樣的:

<div id="success"></div> 
<g:remoteLink action="makeReady" id="${testExecQueueInstance.id}" update="success">X</g:remoteLink> 

def makeReady(Long myid){ 
    String url = createLink(action:"show", id:myid) 
    render(text: "window.location.href='${url.encodeAsURL()}'", contentType: "application/javascript") 
} 
+0

感謝您的建議Igor,但是當我嘗試這個我得到這個錯誤「錯誤errors.GrailsExceptionResolver - 處理請求時發生MissingMethodException沒有方法簽名:java.lang.String.encodeAsJavascript()適用於參數類型:()values:[]。Stacktrace如下: 消息:沒有方法簽名:java.lang.String.encodeAsJavascript()適用於參數類型:()values:[]「 – MorkPork 2013-03-23 19:54:14

+1

你說得對,應該是'.encodeAsJavaScript()'或者'.encodeAsURL()' – 2013-03-24 04:35:13

+0

當我改變它encodeasURL我得到一個重定向,但它不加載一個正確的頁面,現在生成的URL看起來像讀取「localhost/framework/testExecQ ueue /%2Fframework /%2FtestExecQueue /%Fshow「沒有ID,不知道這裏發生了什麼......? – MorkPork 2013-03-25 08:45:35