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的情况下执行此操作?
由于
答案 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