Можно ли объявить функцию внутри GSP? - PullRequest
9 голосов
/ 07 февраля 2012

Как я могу объявить функцию внутри GSP? Мне нужно что-то вроде taglib, но объявлено внутри GSP - это не имеет значения снаружи

Ответы [ 2 ]

9 голосов
/ 07 февраля 2012

Вы не можете определять методы в GSP.Но вы можете иметь анонимные функции, если хотите: D

Пример:

<%
    def prettify = { "***$it***" }
%>
<h1>${prettify(someText)}</h1>

Хотя этот пример не имеет особого смысла, так как это небольшое форматирование может быть встроено.Для любой дополнительной логики для представлений я бы следовал рекомендации OverZealous и использовал taglib.

6 голосов
/ 07 февраля 2012

Нет. Просто не делай этого. Это полностью против цели GSP. GSP предназначен для обработки информации визуальной разметки, а не логики программирования. Бросание функций непосредственно в ваш GSP приведет к непоправимому беспорядку кода.

Почему вы не поместите это в тег? Вот для чего нужны теги; не имеет значения, что он используется только в вашем GSP. GSP должен содержать только простую логику отображения и выходной контент. Повторно используемый код всегда должен содержаться в taglib или в каком-либо контроллере или службе для сложной логики.

Вы не упоминаете, какую платформу вы используете, например, Gaelyk или Grails. (Если вы по какой-то причине не используете чистый Groovy на сервере.) Нет практического способа рекомендовать хорошее решение здесь без дополнительной информации.

Если вы используете теги в стиле JSP (<% %>) в своем GSP, вы, вероятно, делаете это неправильно.

Если вы хотите получить лучший ответ, пожалуйста, предоставьте более подробную информацию о среде программирования, какова цель и почему (почему вы не хотите использовать taglib).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...