예: 포틀릿 집계 태그 라이브러리 사용
집계 태그 라이브러리를 사용하여 여러 포틀릿을 집계함으로써 한 페이지에 여러 다른 컨텐츠를 포함할 수 있습니다. 이 라이브러리는 서블릿에 의해 포함된 모든 JSP(JavaServer Pages) 파일이 사용할 수 있습니다.
포틀릿 집계 태그 라이브러리를 사용하려면 다음 예와 같이 <%@ taglib uri="http://ibm.com/portlet/aggregation" prefix="portlet" %>을 사용하여 JSP 파일 맨 위에서 tag-lib를 선언해야 합니다. 다음 JSP 파일 예는 포틀릿을 한 페이지에서 집계하는 방법을 보여줍니다.
<%@ taglib uri="http://ibm.com/portlet/aggregation" prefix="portlet" %>
<%@ page isELIgnored="false" import="java.util.Enumeration"%>
<portlet:init portletURLPrefix="/dummy/portletTagTest/" portletURLSuffix="/more" portletURLQueryParams="p1=v1&p2=v2">
<portlet:insert url="worldclock/StdWorldClock" contentVar="worldclockcontent" titleVar="worldclocktitle"/>
<portlet:state url="worldclock/StdWorldClock" portletMode="view" var="worldclockview"
portletWindowState="maximized">
<portlet:urlParam name="namea" value="valuea"/>
<portlet:urlParam name="nameb" value="valueb"/>
</portlet:state>
<portlet:state url="worldclock/StdWorldClock" portletMode="edit" var="worldclockedit" portletWindowState="normal">
<portlet:urlParam name="name1" value="value1"/>
<portlet:urlParam name="name2" value="value2"/>
</portlet:state>
<portlet:state url="worldclock/StdWorldClock" portletMode="view" var="worldclockmin"
portletWindowState="minimized">
<portlet:urlParam name="namemin" value="valuemin"/>
<portlet:urlParam name="namemin" value="valuemin"/>
</portlet:state>
<portlet:insert url="worldclock/StdWorldClock" windowId="min" contentVar="simplecontent" titleVar="simpletitle"/>
<portlet:state url="worldclock/StdWorldClock" windowId="min" portletMode="view" var="simpleview"
portletWindowState="maximized">
<portlet:urlParam name="name3" value="value3"/>
<portlet:urlParam name="name4" value="value4"/>
<portlet:urlParam name="name5" value="value5"/>
<portlet:urlParam name="name5" value="value5a"/>
<portlet:urlParam name="name5" value="value5b"/>
<portlet:urlParam name="name5" value="value5c"/>
</portlet:state>
<portlet:state url="worldclock/StdWorldClock" windowId="min" portletMode="edit" var="simpleedit"
action="true" portletWindowState="normal">
<portlet:urlParam name="name6" value="value6"/>
<portlet:urlParam name="name6" value="value6z"/>
</portlet:state>
<portlet:state url="worldclock/StdWorldClock" windowId="min" portletMode="view" var="simplemin"
portletWindowState="minimized">
<portlet:urlParam name="name1" value="value1"/>
<portlet:urlParam name="name2" value="value2"/>
</portlet:state>
<portlet:insert url="test/TestPortlet1" contentVar="testcontent" titleVar="testtitle"/>
<portlet:state url="test/TestPortlet1" portletMode="view" var="testview" portletWindowState="maximized"/>
<portlet:state url="test/TestPortlet1" portletMode="edit" var="testedit" portletWindowState="maximized"/>
<!-- This table is the outtermost table for creating two-column portal layout -->
<TABLE border="0" CELLPADDING="3" CELLSPACING="8" WIDTH="100%">
<TR>
<TD VALIGN="top">
<!-- This table is the top portlet in the first column -->
<table border="0" width="100%" CELLPADDING="3" CELLSPACING="0" CLASS="portletTable" SUMMARY="portlet top left">
<tr><td class="portletTitle" NOWRAP>worldclock title:${worldclocktitle}</td>
<td CLASS="portletTitleControls" NOWRAP>
<a href="${worldclockview}">view</a>
<a href="${worldclockedit}">edit</a>
<a href="${worldclockmin}">minimize</a>
</td>
</tr>
<tr>
<td CLASS="portletBody" COLSPAN="2">
${worldclockcontent}
</td>
</tr>
</table>
<BR/>
<!-- This table is the bottom portlet in the first column -->
<table border="0" width="100%" CELLPADDING="3" CELLSPACING="0" CLASS="portletTable" SUMMARY="portlet bottom left">
<tr>
<td class="portletTitle" NOWRAP>test title:${testtitle}</td>
<td CLASS="portletTitleControls" NOWRAP>
<a href="${testview}">view</a>
<a href="${testedit}">edit</a>
</td>
</tr>
<tr>
<td CLASS="portletBody" COLSPAN="2">
${testcontent}
</td>
</tr>
</table>
</TD>
<TD VALIGN="top">
<!-- This table is the top portlet in the second column -->
<table border="0" width="100%" CELLPADDING="3" CELLSPACING="0" CLASS="portletTable" SUMMARY="portlet top right">
<tr>
<td class="portletTitle" NOWRAP>simple title:${simpletitle}</td>
<td CLASS="portletTitleControls" NOWRAP>
<a href="${simpleview}">view</a>
<a href="${simpleedit}">edit</a>
<a href="${simplemin}">minimize</a>
</td>
</tr>
<tr>
<td CLASS="portletBody" COLSPAN="2">
${simplecontent}
</td>
</tr>
</table>
</TD>
</TR>
</table>
</portlet:init>
태그 라이브러리를 선언하면 다음 포맷을 이전 예 JSP 파일에 즉시 포함할 수 있습니다.<STYLE TYPE="TEXT/CSS">
BODY {
font-family:Verdana,sans-serif; font-size:70%
}
.portletTitle {
text-align: left;border-top: #000000 1px solid; border-bottom: #000000 1px solid; FONT-SIZE: 60.0%;
COLOR: #ffffff; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #5495d5;
}
.portletTitleControls {
text-align: right;border-top: #000000 1px solid; border-right: #000000 1px solid; border-bottom: #000000
1px solid; FONT-SIZE: 60.0%; COLOR: #ffffff; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
BACKGROUND-COLOR: #5495d5;
}
.portletTitleControls A {
COLOR: #ffffff; text-decoration:none; border:#5495d5 1px solid;border-left:white 1px solid;
padding-left:0.5em; padding-right:0.5em;
}
.portletTitleControls A:hover {
COLOR: #ffffff; text-decoration:none; border-top:white 1px solid;
border-bottom:white 1px solid;border-right:white 1px solid;
}
.minimizeControl {
font-weight:bold; font-size:100%;
}
.portletTable {
border-left: gray 1px solid;
border-bottom: gray 1px solid;
border-right: gray 1px solid;
}
.portletBody {
font-family:Verdana,sans-serif; font-size:70%
}
</STYLE>