renderの中でPortletRequestDispatcherを取得することにより、PortletからServletやJSPをincludeすることができます。F.3.2で示したサンプルのログインフォームの部分をJSP化したものを以下に示します。
<%-- ----------------------- Sample JSP ----------------------- --%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%-- Portlet には標準の Tag Library があります --%>
<portlet:defineObjects/>
<%-- このタグを設置することによって、 --%>
<%-- portletConfig portletConfig --%>
<%-- renderRequest renderRequest --%>
<%-- renderResponse renderResponse --%>
<%-- のスクリプト変数が利用できます --%>
<%
if (renderRequest.getParameter("isLogin") != null &&
renderRequest.getParameter("isLogin").equals("true")) {
%>
<%=renderRequest.getParameter("UserName")%> さんがログイン中<br>
<%
}
else {
%>
<center>
<h2><p>ログイン画面</p></h2>
<form action=
"<portlet:actionURL windowState="normal" portletMode="view">
<%-- このようなパラメータを付加できます --%>
<portlet:param name="mode" value="jsp"/>
</portlet:actionURL>" method="POST">
ユーザ名を入力してください<br>
<input type="text" name="UserName" size="8"><br>
パスワードを入力してください<br>
<input type="password" name="Password" size="8"><br>
<input type="reset" value="reset">
<input type="submit" name="send" value="send">
</form><br>
</center>
<%
}
%>画面出力例
Portlet仕様には、PortletからincludeされるJSPのために標準のTag Libraryが用意されています。使用するには次のように宣言します。
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
Portlet Tagには、以下のものがあります。
defineObjects
このタグを使うと、各オブジェクトに次のスクリプト変数を利用してアクセスできるようになります。
RenderRequest renderRequest
RenderResponse renderResponse
PortletConfig portletConfig
actionURL
Action URLを作ります。Window StateやPortlet Modeを指定できます。
renderURL
Render URLを作ります。Window StateやPortlet Modeを指定できます。
namespace
文字列にPortlet内でユニークな名前を与えます。
param
actionURLタグ、renderURLタグの中にパラメータを付加できます。
PortletからServletやJSPをincludeするには、render内で次のようにPortletRequestDispatcherを取得して行います。
PortletRequestDispatcher stDispatcher =
getPortletContext().getRequestDispatcher("/WEB-INF/jsp/sample.jsp");
stDispatcher.include(request, response);
|