您需要提供portlet 名称,即portlet 描述符中的名称(WEB-INF/portlet.xml)。它应该类似于以下代码段:
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<description xml:lang="EN">A sample portlet</description>
<portlet-name>MyPortletName</portlet-name> <!-- This is the name to mention -->
<display-name xml:lang="EN">My Portlet</display-name>
<portlet-class>some.package.name.MyPortlet</portlet-class>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<portlet-info>
<title>Sample Portlet to showcase GateIn AMD modules</title>
</portlet-info>
</portlet>
</portlet-app>
然后在gatein-resources.xml文件下,您将按照您所做的方式声明您的 JS 模块,但使用portlet-name:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<gatein-resources
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_resources_1_5 http://www.gatein.org/xml/ns/gatein_resources_1_5"
xmlns="http://www.gatein.org/xml/ns/gatein_resources_1_5">
<portlet>
<name>MyPortletName</name>
<module>
<script>
<name>pagination</name>
<path>/js/lib/modules/pagination.js</path>
</script>
</module>
</portlet>
</gatein-resources>
当您的 portlet 由 portlet 容器注入时,后者会小心地调用您已声明为该 portlet 依赖项的所有必需模块 (JS),使用gatein-resources.xml(内部使用 RequireJS),即无需使用<script>
元素手动调用您的脚本。就用它吧。
编辑
如果您需要有公共依赖项,当提到公共时,我们指的是portlet而不是JSP文件之间的公共,您可以声明一个公共模块并在所有需要它的 portlet 下使用它:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<gatein-resources
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_resources_1_5 http://www.gatein.org/xml/ns/gatein_resources_1_5"
xmlns="http://www.gatein.org/xml/ns/gatein_resources_1_5">
<portlet>
<name>MyPortletName1</name>
<depends>
<module>
<name>pagination</nam>
</module>
</depends>
</portlet>
<portlet>
<name>MyPortletName2</name>
<depends>
<module>
<name>pagination</nam>
</module>
</depends>
</portlet>
<module>
<name>pagination</name>
<script>
<path>/js/lib/modules/pagination.js</path>
</script>
</module>
</gatein-resources>
当被portlet 容器注入时,将所有的JS 依赖注入到portlet 中,因此在这个portlet 的生命周期内返回的任何JSP 页面都会有JS 文件被注入其中。无需在 JSP 中声明任何内容,因为借助 GateIn AMD 框架,一切都在服务器端无缝完成。