2013-08-30 2 views
0

Grails noob здесь. Я создаю простое приложение grails, где у меня есть страница создания/редактирования/списка/показа по умолчанию для объекта Domain продукта. У меня также есть ProductController. Метод создания по умолчанию делает это:Grails disallow normal create

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

Я понимаю, что это приведет меня к странице создания. И в объекте params ничего не будет, поэтому все будет пустым.

Я хочу, чтобы изменить поведение, так что, когда метод create() вызывается, всплывающее возвращается Пользователю: Sorry you are not allowed to create new data.

Пользователь останется на той же странице, и единственное, что будет происходить в всплывающее окно.

Как мне это сделать без использования JavaScript?

Благодаря

+3

Это должно быть всплывающее окно? Вы можете просто отобразить сообщение в виде простого html, тогда вам не нужен JavaScript. –

+0

Если вы хотите контролировать, к каким функциям имеют доступ определенные пользователи, я предлагаю вам взглянуть на плагин Spring Security: http://grails.org/plugin/spring-security-core – Stephan

ответ

4

Если метод создания не допускается, почему бы не просто удалить метод Create() от контроллера, удалить страницу create.gsp и удалить кнопку «New» на странице списка?

Если вы хотите предложить кнопку «Создать» и отобразить всплывающее сообщение, в котором говорится, что вы не можете использовать кнопку, это, вероятно, проще всего сделать в javascript.

Если вы можете просто показать сообщение в Grails по умолчанию панели на сообщение, а не в всплывающем окне, а затем изменить метод контроллера для

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

Перед отправкой пользователю мнение GSP, вы должны сделать решение в контроллере, если пользователю разрешено выполнить действие create. В контроллере это может быть что-то простое, как:

params.allowed = false 

В результате этого решения затем передается к вам GSP, где вы можете оценить его в ВСП, используя что-то вроде:

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

Для предупреждения, есть хорошие альтернативы javascript вроде: http://getbootstrap.com/components/#alerts