Перенаправление вызова действия Grails

Я новичок в Grails и просто хотел бы учиться по одному.

Как я могу вызвать действие из другого действия в том же контроллере:

class ListProjectsController {
    def index () {      
        redriect(action: sampleMethod)
    }

    def sampleMethod () {
        //some codes here
    }
}

Я попытался перенаправить, но это вызвало некоторую ошибку, помогите, пожалуйста?

вот картинка сообщения об ошибке

http://i24.photobucket.com/albums/c22/Klifford_Kho/Capture_zps5j8nov9f.png


person Red Viper    schedule 20.10.2015    source источник
comment
Какую ошибку вы получаете и чего вы пытаетесь достичь? Просто перенаправление на другое действие, когда вы находитесь в индексе?   -  person Lewis Norton    schedule 20.10.2015
comment
да, я только хочу научиться перенаправлять на другое действие не только из индекса, но и любым методом   -  person Red Viper    schedule 20.10.2015
comment
Можете ли вы обновить свой вопрос с сообщением об ошибке, которое вы получаете. Я подозреваю, что у вас нет представления для действия sampleMethod.   -  person Lewis Norton    schedule 20.10.2015
comment
Уже обновил. Я все еще не могу загрузить прямую картинку здесь, поэтому я дал ссылку   -  person Red Viper    schedule 20.10.2015
comment
Должно быть redirect(action: 'sampleMethod')... Обратите внимание, что имя метода — String.   -  person Joshua Moore    schedule 20.10.2015
comment
просто для информации @kliffordkho они называются действием, а не методом, поскольку они используются для рендеринга ответа или перенаправления на какое-то другое действие, поэтому обновляются в Вопросе   -  person Anshul    schedule 22.10.2015
comment
Ооо ок спасибо за информацию   -  person Red Viper    schedule 23.10.2015


Ответы (3)


Это старый стиль, существовавший до Grails 2, когда действия были замыканиями. Вы можете указать имя или обратиться к замыканию непосредственно по имени. При использовании методов вы не можете ссылаться на них как на объекты, поэтому вам просто нужно указать имя:

redirect(action: 'sampleMethod')
person Burt Beckwith    schedule 20.10.2015

запустите команду Grails Clean и обновите код до

redirect(action: 'sampleMethod')
person Uday    schedule 20.10.2015

Вы неправильно написали имя метода redirect как redriect.

person Lewis Norton    schedule 20.10.2015
comment
Вау, глупая ошибка. После того, как я ее исправил, все равно выдает ту же ошибку :(( - person Red Viper; 20.10.2015
comment
та же ошибка: нет такого свойства: sampleMethod для класса: projecttracker.ListProjectsController - person Red Viper; 20.10.2015
comment
По ошибке вы найдете Нет такого свойства: sampleMethod, потому что вы определили его как sampleMethod, а не определили его как строку, подобную этому redirect(action:'sampleMethod') - person Anshul; 22.10.2015