サーブレットをポートレットディレクトリ下のURLにマッピングしておくと,JSPを呼び出す方法と同様に,includeアクションを使用して相対パス形式でサーブレットを呼び出せます。
WebアプリケーションのDD(web.xml)のマッピング例を次に示します。
<servlet>
<servlet-name>Handler</servlet-name>
<servlet-class>mydomain.myapp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Handler</servlet-name>
<url-pattern>/portlets/mvctest/Handler</url-pattern>
</servlet-mapping>
JSPからサーブレットを呼び出す例を次に示します。
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %>
// サーブレット呼び出し
<jsp:include page="Handler" flush="true"/>
<%
String uri = "error.jsp";
try {
PortletInfoBean pInfo = new PortletInfoBean();
pInfo.initBean(request);
PortletInfoBean.Mode mode = pInfo.getMode();
if (mode == PortletInfoBean.Mode.DEFAULT) {
/** サマリ画面用業務ロジック呼び出し */
uri = "summary.jsp";
} else if (mode == PortletInfoBean.Mode.MAXIMIZE) {
/** 最大化画面用業務ロジック呼び出し */
uri = "main.jsp";
}
} catch (Exception ioe) {
// エラーメッセージ出力
}
%>
// includeを用いたJSP(View)の呼び出し
<jsp:include page="<%= uri %>" flush="true"/>