虽然 Struts portlet 项目与标准 portlet 和 Struts 项目有一些公共特征,但是仍存在一些您应该注意的差别。Struts portlet 项目结构和相关资源都取决于 WebSphere® Portal 提供的“Struts Portlet 框架”(SPF)支持并且包括在 Rational® Developer 中。
使用“新建 Portlet 项目”向导创建 Struts portlet 项目。将在创建项目过程中添加缺省 Struts-type 类型 portlet 和 Web 图文件(可选)。该向导将自动生成 Struts portlet 配置文件和 web.xml 文件的必要更新,并将所有 SPF 标记库和 JAR 文件添加至所需目录结构的项目中。
资源类型 | 文件 | 目标目录 | 注 |
---|---|---|---|
TLD | SPFLegacyBlank.war 中的所有 *.tld 文件 | WEB-INF | |
JAR | SPFLegacyBlank.war 中除 Blank.jar 之外的所有 *.jar 文件 | WEB-INF/lib | |
配置文件 |
|
WEB-INF | Struts 配置文件中将自动生成定义“请求处理器”类的 <controller> 元素。 |
部署描述符 |
|
WEB-INF | 对标准 web.xml 文件进行了下列修改:
|
下列样本配置和部署描述符文件片段显示在 Struts portlet 项目中使用的代表标记:
<controller processorClass="com.ibm.wps.portlets.struts.WpsRequestProcessor"> </controller>
<servlet id="Struts_Unique_Servlet_Name"> <servlet-name>Struts</servlet-name> <display-name>Struts Portlet</display-name> <servlet-class>com.ibm.wps.portlets.struts.WpsStrutsPortlet</servlet-class> <!-- Struts configuration --> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>struts-servlet-mapping</param-name> <param-value>*.do</param-value> </init-param> <!-- end of Struts configuration --> </servlet>
<servlet-mapping id="Struts_Unique_ServletMapping"> <servlet-name>Struts</servlet-name> <url-pattern>/Struts/*</url-pattern> </servlet-mapping>这是要添加至 web.xml 的其它标记库的示例:
<taglib> <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib>
<portlet-app uid="A_Unique_ID:1" major-version="1" minor-version="0"> <portlet-app-name>Struts Portlet Application</portlet-app-name> <portlet id="Portlet_1" href="WEB-INF/web.xml#Struts_Unique_Servlet_Name" major-version="1" minor-version="0"> <portlet-name>Struts Portlet</portlet-name> <cache> <expires>0</expires> <shared>NO</shared> </cache> <allows> <maximized/> <minimized/> </allows> <supports> <markup name="html"> <view/> </markup> </supports> </portlet> </portlet-app>这是在 portlet.xml 中定义的具体 portlet 的示例:
<concrete-portlet-app uid="A_Unique_ID:1.1"> <portlet-app-name>Struts Blank Application</portlet-app-name> <concrete-portlet href="#Portlet_1"> <portlet-name>Struts Portlet</portlet-name> <default-locale>en</default-locale> <language locale="en"> <title>Struts Portlet</title> <title-short>Struts Portlet</title-short> <description>Struts Portlet</description> <keywords>WPS, Struts</keywords> </language> <config-param> <param-name>FilterChain</param-name> <param-value>StrutsTranscoding</param-value> </config-param> <!-- any additional Struts related config-param values added here --> </concrete-portlet> </concrete-portlet-app>