2013-03-22 97 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