By Terry.lee
SpiritSeekerS@sqatester.com
?
?
????????
本部份將講述
PortletConfig
對象及其
PortletContext
對象的概念及應用
.
?
-
PortletConfig
對象
和
ServletConfig
對象類似
, PortletConfig
對象提供
Portlet
初始的所需的參數(shù)及其對
PortletContext
對象存取提供相關(guān)方法
.
和
ServletConfig
不同處在于
, PortletConfig
對象提供對
Portlet Title Bar
資源的
I18N
支持
,
我們可以設(shè)定不同的
Resource Bundle
文件用以提供多語言的支持
,
如下
portlet.xml
文件
:
?
… …
?????????? <portlet-info>
???????????????? <title>PortletConfig Example</title>
???????????????? <short-title>PortletConfig</short-title>
???????????????? <keywords>PortletConfig</keywords>
? </portlet-info>
?
… …
?
以上
Portlet
描述文件中的設(shè)置用于顯示
Portlet
的
Title Bar
文字
,
同樣也可以使用
Resource Bundle
用以顯示
Title Bar
文字
,
如下
:
?
?
… …
?
<resource-bundle>
portlets.portletconfig.portletconfigexample
</resource-bundle>
??????????
… …
?
?
這里我們將開發(fā)一個簡單使用
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
相關(guān)配置文件
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
后
,?
將所有配置及相關(guān)文件部署后
,
啟動
Tomcat.
?
?
?
在
Browser
中加載如下頁面
: Http://localhost:8080/pluto/portal ,
可以看到如下的頁面
(
圖
:3-1)
?
如果機器的
Locale
及語言設(shè)定是以中文簡體為缺省
,
則單擊
PortletConfig Example Page
后可以看到如下
Portlet
頁面
(
圖
3-1):
?
????
?????
圖
3-1
?
注
:
因為現(xiàn)在
Pluto
的開發(fā)中沒有做
I18N
的處理
,
這里如果你的機器的
Locale
是中文的話
,
顯示是亂碼
,
請將
IE
的
encoding
設(shè)定為
GB2312(View -> Encoding -> Chinese Simplified),
如圖
3-1.
?
?
如果機器的
Locale
及語言設(shè)定是英文的話
,
將看到如下
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
實現(xiàn)
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
規(guī)范介紹
" 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)