2013-03-22 3 views
0

Правильно, я, кажется, делаю это правильно, и так просто, что на самом деле ничего не должно быть, но для жизни меня я не понимаю, почему его не работает, у меня есть удаленная ссылка в моем списке зрения, как таким образом: -grails simple redirect не работает

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

приладки пуст на данный момент, кроме я хочу, чтобы показать линию выбрали, так что контроллер имеет только это в ней: -

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

И шоу-шоу - это стандартное шоу болота, которое создает Грайлс с передачей только Lond ...

Почему это не работает? Какую очевидность очевидности я пропустил, что я буду пинать себя в течение следующих нескольких дней?

+0

, что является фактической ошибкой, что происходит? Является ли перенаправление случаем с неправильным URL? Не вызван ли вызов Ajax? Не выполняется ли действие контроллера makeReady? –

+0

Ничего не произошло на самом деле, к сожалению ... :( – MorkPork

+0

Итак, даже звонок Ajax не работает? –

ответ

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, но когда я попробую это, я получаю эту ошибку «ERROR errors.GrailsExceptionResolver - MissingMethodException произошел при обработке запроса : [POST]/FARTFramework/testExecQueue/makeReady/10 Нет сигнатуры метода: java.lang.String.encodeAsJavascript() применим для типов аргументов:() values: []. Stacktrace следует: Сообщение: Нет сигнатуры метода : java.lang.String.encodeAsJavascript() применим для типов аргументов:() values: [] " – MorkPork

+1

Вы правы, вместо этого должен быть' .encodeAsJavaScript() '. Или' .encodeAsURL() ' –

+0

Когда я меняю он для encodeasURL Я получаю перенаправление, но не загружая надлежащую страницу, создаваемый URL теперь выглядит следующим образом: «localhost/framework/testExecQ ueue /% 2Fframework /% 2FtestExecQueue /% Fshow "без id, не уверен, что происходит здесь ...? – MorkPork