默认情况下,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?
}
}它已经可以正常工作了。如果用户在没有登录的情况下点击编辑,那么他会被重定向到登录页面。否则,如果他登录了,那么他只能编辑自己。我应该把什么放在"else“子句上?它应该已经允许用户编辑他的东西了,但我真的不知道如何实现我想要的东西。:(
如果有人能分享默认的edit代码片段,那就太好了。
我对所有这些都是新手,所以不要对我太苛刻。
发布于 2011-04-18 02:06:18
如果您正在谈论Grails,请备份您的UserController并尝试使用grails generate-controller -它将为您提供默认操作的完整文本。
我还建议你浏览一下scaffolding chapter --这是一个很好的起点。
发布于 2011-04-18 03:23:16
默认的编辑操作应该如下所示(伪代码,它取决于您在其上创建代码的实际域类):
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即可实现此目的。
https://stackoverflow.com/questions/5695095
复制相似问题