Grails禁止正常创建

时间:2013-08-30 10:37:44

标签: grails

Grails noob在这里。我构建了一个简单的grails应用程序,其中我有一个Product域对象的默认create / edit / list / show页面。我也有ProductController。默认情况下,create方法执行此操作:

def create() {
    [productInstance: new Product(params)]
}

我的理解是这将带我进入创建页面。 params对象中没有任何内容,所以一切都将是空白的。

我想更改行为,以便在调用create()方法时,会向用户返回弹出窗口:Sorry you are not allowed to create new data.

用户将保持在同一页面上,唯一会发生的是弹出窗口。

如何在不使用JavaScript的情况下执行此操作?

由于

2 个答案:

答案 0 :(得分:4)

如果不允许使用create方法,为什么不从控制器中删除create()方法,删除create.gsp页面并从列表页面中删除“New”按钮?

如果你想提供一个“新建”按钮并显示一条说明你无法使用该按钮的弹出消息,这可能是最简单的在javascript中完成的。

如果您只能在默认的grails消息面板中而不是在弹出窗口中显示消息,则将控制器方法更改为

def create() {
    flash.message = "Sorry you are not allowed to create new data."
    redirect(action: "list")
}

答案 1 :(得分:0)

在将用户发送到GSP视图之前,如果允许用户执行create操作,则应在控制器中做出决定。在你的控制器中,这可能是简单的:

params.allowed = false

然后将此决定的结果传递给您GSP,您可以使用以下内容在GSP中对其进行评估:

<g:if test="${params.allowed == false}"> 
Alert: you are not allowed...
</g:if>

对于提醒,javascript有很好的替代方法,例如:http://getbootstrap.com/components/#alerts