我想知道在我的GSP(Grails服务器页面)或Groovy中完全等于php require的命令。
我知道我可以使用<g:include/>
但是想知道是否有任何命令可以满足常规/ grails中的php要求?
答案 0 :(得分:1)
完全等价物实际上取决于PHP脚本中require()
的使用情况。
PHP和Servlet环境的运行方式不同。在PHP中使用require()
只需找到另一个PHP脚本并执行它。命令式样操作不适用于面向对象的Java / Grails / Servlet。
根据您要完成的任务,有几种可能的等价物:
<强> <g:include/>
强>
包含另一个控制器/操作或视图的响应 目前的回应
e.g。
<g:include controller="foo" action="bar"/>
这样做会调用不同的控制器/操作并将响应插入当前页面。如果您的require()
正在呈现某些标记,这将类似于PHP。
<强> View templates 强>:
如果你只想在几个页面中包含常见的标记,那么这些可能就是你要找的东西。您可以创建模板视图,并使用<g:render/>
将其包含在GSP中。我怀疑这就是你所追求的,但请参阅下面的“更新”,了解一些有关此问题的建议。
<强> @page import
强>
e.g。
<% @page import="com.example.mypackage.MyClass" %>
这将使MyClass
可用于GSP,如果要求指定某些库类或要在其他PHP脚本中使用的函数,则类似于require()
。但是,使用这个非常尖叫代码味道,因为几乎任何你使用它的东西都更适合控制器动作或服务。
<强>更新强>
看到你的other question,我冒昧地试图在几个不同的视图中包含一个共同的GSP / HTML,这与Grails为其提供的布局和模板有所不同。
如果你想在所有GSP中“需要”,比如“blog-header.php”,你更可能只想在一个布局中包含标题的内容,例如grails-app/views/layouts/main.gsp
,然后在需要标题的视图中使用该布局。
答案 1 :(得分:0)
也许你应该尝试grails'template'。
模板是一个视图片段,可以在任何视图中随时使用,这是为了推广DRY ..
<g:render template="myTemplate" model="['object1':object1,'object2':object2]" />
在这种情况下,应该存在一个名为_myTemplate.gsp的GSP,并且在此模板中使用两个对象,如果您愿意,可以只使用内容而不处理对象的模板。
在上面的调用中,模板在与模板相同的文件夹中的视图中调用,但您可以从其他文件夹中的另一个视图调用它:
<g:render template="other/myTemplate" model="['object1':object1,'object2':object2]" />
模板名称的模式是相同的......
检查出来......