Эквивалент точный действительно зависит от того, для чего require()
используется в сценарии PHP.
Среды PHP и сервлетов работают по-разному.Использование require()
в PHP просто находит другой скрипт PHP и выполняет его.Эта операция в императивном стиле не относится также к более объектно-ориентированным Java / Grails / Servlets.
Существует несколько возможных эквивалентов, в зависимости от того, что вы пытаетесь выполнить:
<g:include/>
Включает ответ другого контроллера / действия или представления в текущий ответ
Например,
<g:include controller="foo" action="bar"/>
. Это вызовет другой контроллер / действие и вставит ответ на текущую страницу.Это будет похоже на PHP, если ваш require()
рендерил некоторую разметку.
Просмотр шаблонов :
Есливы просто пытаетесь включить общие части разметки на несколько страниц, это может быть то, что вы ищете.Вы можете создавать шаблоны и использовать <g:render/>
, чтобы включить их в свои GSP.Я подозреваю, что это то, что вам нужно, но см. Мое «Обновление» ниже для некоторых советов по этому поводу.
@page import
например,
<% @page import="com.example.mypackage.MyClass" %>
Это сделает MyClass
доступным для GSP, что было бы аналогично require()
, если требование указывало некоторые библиотечные классы или функции, которые будут использоваться в других сценариях PHP.Однако использование этого в значительной степени кричит запах кода , поскольку почти все, для чего вы будете использовать это, будет более подходящим для действия контроллера или службы.
Обновление:
Видя ваш другой вопрос , я рискну, вы просто пытаетесь включить общий фрагмент GSP / HTML в несколько разных представлений, чтоof идет вразрез с тем, что Grails предоставляет вам с его макетами и шаблонами.
Если вы пытаетесь «потребовать», скажем, «blog-header.php» во всех ваших GSP, вы, скорее всего,Вы хотите просто включить содержимое заголовка в макет, например, grails-app/views/layouts/main.gsp
, а затем использовать этот макет в представлениях, для которых требуется заголовок.