首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Groovy帮助...关于def edit和控制器

Groovy帮助...关于def edit和控制器
EN

Stack Overflow用户
提问于 2011-04-18 01:26:34
回答 2查看 98关注 0票数 0

默认情况下,def edit = {}包含什么?你看,我在看一本书,但它使用的是一个旧版本,这就是为什么一些代码不能工作的原因。我有一段代码:

代码语言:javascript
运行
复制
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?
}

}

它已经可以正常工作了。如果用户在没有登录的情况下点击编辑,那么他会被重定向到登录页面。否则,如果他登录了,那么他只能编辑自己。我应该把什么放在"else“子句上?它应该已经允许用户编辑他的东西了,但我真的不知道如何实现我想要的东西。:(

如果有人能分享默认的edit代码片段,那就太好了。

我对所有这些都是新手,所以不要对我太苛刻。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-18 02:06:18

如果您正在谈论Grails,请备份您的UserController并尝试使用grails generate-controller -它将为您提供默认操作的完整文本。

我还建议你浏览一下scaffolding chapter --这是一个很好的起点。

票数 0
EN

Stack Overflow用户

发布于 2011-04-18 03:23:16

默认的编辑操作应该如下所示(伪代码,它取决于您在其上创建代码的实际域类):

代码语言:javascript
运行
复制
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 Security Plugin即可实现此目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5695095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档