0

Grails 菜鸟在这里。我正在构建一个简单的 grails 应用程序,其中我有一个 Product 域对象的默认创建/编辑/列表/显示页面。我也有ProductController。默认情况下,create 方法执行此操作:

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

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

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

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

我如何在不使用 JavaScript 的情况下做到这一点?

谢谢

4

2 回答 2

4

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

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

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

def create() {
    flash.message = "Sorry you are not allowed to create new data."
    redirect(action: "list")
}
于 2013-08-30T11:58:44.430 回答
0

在将用户发送到 GSP 视图之前,您应该在控制器中做出决定,是否允许用户执行创建操作。在您的控制器中,这可能很简单,例如:

params.allowed = false

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

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

对于警报,有一些漂亮的 javascript 替代品,例如: http: //getbootstrap.com/components/#alerts

于 2015-04-12T06:43:49.430 回答