【问题标题】:Groovy help... About def edit and controllersGroovy 帮助... 关于 def 编辑和控制器
【发布时间】:2011-08-07 09:29:52
【问题描述】:

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 sn-p,那就太好了。

我对所有这些都有些陌生,所以请放轻松。

【问题讨论】:

    标签: groovy controller dns closures edit


    【解决方案1】:

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

    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

    【讨论】:

      【解决方案2】:

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

      我还建议您查看scaffolding chapter - 这是一个很好的起点。

      【讨论】:

      • 谢谢... :) 我照你说的做了,成功了...但还是有问题。
      猜你喜欢
      • 2011-02-02
      • 1970-01-01
      • 2012-06-07
      • 2010-11-08
      • 1970-01-01
      • 2017-08-09
      • 2023-03-12
      • 2011-06-26
      • 1970-01-01
      相关资源
      最近更新 更多