Groovy, помогите ... Про def edit и контроллеры - PullRequest
0 голосов
/ 17 апреля 2011

Что def edit = {} содержит по умолчанию?Видите ли, я следил за книгой, но оказалось, что я использую старую версию, поэтому часть кода не работает.У меня есть этот кусок кода:

def edit= {
def user = User.get(params.id)
    if (session?.user?.id == null){
        flash.message = "You have to login first before editting your stuff."
        redirect(action:'login')
        return
    }else if(session?.user?.id != params.id) {
        flash.message = "You can only edit yourself."
        redirect(action:list)
        return
    }else{
        //What should I put here?
}

}

Это уже работает.Если пользователь нажимает на кнопку «Редактировать» без входа в систему, он перенаправляется на страницу входа.В противном случае, если он войдет в систему, он сможет редактировать только сам.Что я должен поставить на «остальное» предложение?Он уже должен позволять пользователю редактировать свои материалы, но я не знаю, как реализовать то, что я хочу.:(

Было бы замечательно, если бы кто-то мог поделиться фрагментом по умолчанию edit.

Я немного новичок во всем этом, так что будьте спокойны со мной.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2011

действие редактирования по умолчанию должно выглядеть следующим образом (псевдокод, это зависит от фактического класса домена, на котором вы создаете код):

def edit = {
    redirect(action: "show", id: params.id)
    return true

    def <domain>Instance = <DomainClass>.get(params.id)
    if (!<domain>Instance) {
        flash.message = "${message(code: 'default.not.found.message', args: [message(code: '<DomainClass>.label', default: '<DomainClass>'), params.id])}"
        redirect(action: "list")
    }
    else {
        return [<domain>Instance: <domain>Instance]
    }
}

Кстати: в большинстве случаев вам не нужно выполнять проверки безопасности, запрограммировав их явно в коде контроллера, для этого используйте Плагин безопасности Grails Spring *1005*.

0 голосов
/ 17 апреля 2011

Если вы говорите о Grails, создайте резервную копию вашего UserController и попробуйте grails generate-controller - он даст вам полный текст действий по умолчанию.

Я также предлагаю вампросмотрите главу по лесам - это отличный момент для начала.

...