By Terry.lee
SpiritSeekerS@sqatester.com
本部份将讲述
PortletConfig
对象及其
PortletContext
对象的概念及应用
.
-
PortletConfig
对象
和
ServletConfig
对象类似
, PortletConfig
对象提供
Portlet
初始的所需的参数及其对
PortletContext
对象存取提供相关方法
.
和
ServletConfig
不同处在于
, PortletConfig
对象提供对
Portlet Title Bar
资源的
I18N
支持
,
我们可以设定不同的
Resource Bundle
文件用以提供多语言的支持
,
如下
portlet.xml
文件
:
… …
<portlet-info>
<title>PortletConfig Example</title>
<short-title>PortletConfig</short-title>
<keywords>PortletConfig</keywords>
</portlet-info>
… …
以上
Portlet
描述文件中的设置用于显示
Portlet
的
Title Bar
文字
,
同样也可以使用
Resource Bundle
用以显示
Title Bar
文字
,
如下
:
… …
<resource-bundle>
portlets.portletconfig.portletconfigexample
</resource-bundle>
… …
这里我们将开发一个简单使用
Resource Bundle
的
Portlet.
只需要添加所须的
Resource Bundle
文件
.
我们使用英文及其中文的
Resource Bundle,
如下
:
3)
Base Resource Bundle (portletconfigexample.properties)
# English Resource Bundle
#
# filename: portletconfigexample.properties
# Portlet Info resource bundle example
javax.portlet.title=PortletConfig Example
javax.portlet.short-title=PortletConfig
javax.portlet.keywords=PortletConfig
2) Chinese Resource Bundle (portletconfigexample_zh.properties)
# Chinese Resource Bundle
#
# filename: portletconfigexample.properties
# Portlet Info resource bundle example
javax.portlet.title=Portlet配置例子
javax.portlet.short-title=Portlet配置
javax.portlet.keywords=Portlet配置
3) portlet.xml
… …
<resource-bundle>
portlets.portletconfig.portletconfigexample
</resource-bundle>
… …
-
源代码及
Portlet
相关配置文件
1) Portlet (
PortletConfigExample
.java
)
package
portlets.portletconfig;
/**
*
@author
terry
*
*
To
change
the
template
for
this
generated
type
comment
go
to
*
Window>Preferences>Java>Code
Generation>Code
and
Comments
*/
import
javax.portlet.*;
import
java.io.IOException;
import
java.io.Writer;
public
class
PortletConfigExample
extends
GenericPortlet{
public
void
doView(RenderRequest
request,
RenderResponse
response)
throws
PortletException,
IOException
{
response.setContentType(
"text/html"
);
String
view
=
getPortletConfig().getInitParameter(
"view"
);
Writer
writer=response.getWriter();
writer.write(view);
}
public
void
doEdit(RenderRequest
request,
RenderResponse
response)
throws
PortletException,
IOException
{
response.setContentType(
"text/html"
);
String
edit
=
getPortletConfig().getInitParameter(
"edit"
);
Writer
writer=response.getWriter();
writer.write(edit);
}
}
2)
Portlet.xml
… …
<!-- PortletConfig Example -->
<portlet>
<description>PortletConfig Example</description>
<portlet-name>PortletConfigExample</portlet-name>
<display-name>disPortletConfigExample</display-name>
<portlet-class>portlets.portletconfig.PortletConfigExample</portlet-class>
<init-param>
<name>view</name>
<value>Here is View Mode</value>
</init-param>
<init-param>
<name>edit</name>
<value>Here is Edit Mode</value>
</init-param>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<supported-locale>zh</supported-locale>
<supported-locale>en</supported-locale>
<resource-bundle>portlets.portletconfig.portletconfigexample</resource-bundle>
</portlet>
… …
3)
pageregistry.xml
… …
<!-- PortletConfig Example Page -->
<fragment name="portletconfigpage" type="page">
<navigation>
<title>PortletConfig Example Page</title>
<description>PortletConfig Example Page</description>
</navigation>
<fragment name="row1" type="row">
<fragment name="col1" type="column">
<fragment name="p1" type="portlet">
<property name="portlet" value="10.20"/>
</fragment>
</fragment>
</fragment>
</fragment>
… …
4)
PortletRegistry.xml
… …
<portlet id="20">
<definition-id>portlets.PortletConfigExample</definition-id>
</portlet>
… …
将以上源代码编译后
,
再通过
Eclipse
生成
/
更新
Portlet
的
web.xml
后
,
将所有配置及相关文件部署后
,
启动
Tomcat.
在
Browser
中加载如下页面
: Http://localhost:8080/pluto/portal ,
可以看到如下的页面
(
图
:3-1)
如果机器的
Locale
及语言设定是以中文简体为缺省
,
则单击
PortletConfig Example Page
后可以看到如下
Portlet
页面
(
图
3-1):
图
3-1
注
:
因为现在
Pluto
的开发中没有做
I18N
的处理
,
这里如果你的机器的
Locale
是中文的话
,
显示是乱码
,
请将
IE
的
encoding
设定为
GB2312(View -> Encoding -> Chinese Simplified),
如图
3-1.
如果机器的
Locale
及语言设定是英文的话
,
将看到如下
Portlet
页面
(
图
3-2):
图
3-2
资源
:
·
Pluto
http://jakarta.apache.org/pluto
·
Pluto Mail List
http://news.gmane.org/gmane.comp.jakarta.pluto.user
·
WSRP Spec1.0
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp
·
Apache
的
WSRP
实现
http://ws.apache.org/wsrp4j/
·
Apache’s Portal, JetSpeed:
http://jakarta.apache.org/jetspeed/site/index.html
·
JSR 168:
http://www.jcp.org/en/jsr/detail?id=168
·
"Portlet
规范介绍
" By Stefan Hepper
和
Stephan Hesmer
Part 1: Get your feet wet with the specification's underlying terms and concepts (August 2003)
Part 2: The Portlet API's reference implementation reveals its secrets
(September 2003)