Portlet 形態(tài)
Portlet 的形態(tài)直白的說,就是 portlet 功能的表現(xiàn)形式。通常, portlet 根據(jù)他們自己功能的不同,執(zhí)行不同的任務(wù)以及生成不同的內(nèi)容。 Portlet 形態(tài)直接預(yù)示著他們擔(dān)任什么樣的功能并且將會顯示什么樣的內(nèi)容。當(dāng) portlet 被調(diào)用的時候, portlet 容器會為其提供的一個的當(dāng)前 portal 形態(tài)。 Portlet 可以很方便的在處理一個 action 請求的時候改變它的形態(tài)。
?????? Portal 規(guī)范定義了 3 個 portlet 形態(tài)。他們分別是 VIEW , EDIT 以及 HELP 。 PortletMode 類定義了這些形態(tài)的常量。
?????? Portal 形態(tài)還用于對用戶的權(quán)限功能控制,比方說一個未認證用戶只能察看 portlet 的 VIEW 以及 HELP 形態(tài),而認證用戶則能訪問 portlet 的 EDIT 形態(tài)。
8.1 Portlet 的 VIEW 形態(tài)
?????? Portlet 的 VIEW 形態(tài)的主要功能是通過生成標記語言來顯示 portlet 的當(dāng)前狀態(tài)。比方說,一個 portlet 的 VIEW 形態(tài)可能包含一到兩個頁面,用戶可以瀏覽或者做某些操作。它也可能僅僅是一張靜態(tài)頁面而不做任何事情。
?????? 開發(fā)者可以簡單的通過重載 GenericPortlet 的 doView() 方法來獲得這項功能
?????? Portlet 必須支持 VIEW 形態(tài)
8.2 EDIT 形態(tài)
?????? 在 EDIT 形態(tài)下面, portlet 應(yīng)該提供相關(guān)的內(nèi)容以及邏輯給用戶,以便能夠讓用戶可以自定義 portlet 行為。一個 EDIT 形態(tài)的 portlet 應(yīng)該有 1 到多個窗口,這樣用戶就能從這些窗口進入他們自己自定義的數(shù)據(jù)了。
?????? 通常, EDIT 形態(tài)的 portlet 會設(shè)置或者更新 Portlet 參數(shù)。參考 portlet 參數(shù)一節(jié)獲得更多的細節(jié)。
開發(fā)者可以簡單的通過重載 GenericPortlet 的 doEdit() 方法來獲得這項功能
Portlet 不必支持 EDIT 形態(tài)
8.3 HELP 形態(tài)
?????? 在 help 形態(tài)下面, portlet 應(yīng)該提供 portlet 本身的相關(guān)幫助信息。一個 portlet 的幫助信息可以是介紹 portlet 的完整幫助或者是內(nèi)容相關(guān)的幫助文本。
開發(fā)者可以簡單的通過重載 GenericPortlet 的 doHelp() 方法來獲得這項功能
Portlet 不必支持 HELP 形態(tài)
8.4 portlet 自定義形態(tài)
?????? Portlal 的提供者可以自定義 portlet 形態(tài)用來提供自己指定的功能
?????? 要使用自定義 Portlet 形態(tài),首先需要在部署描述器中添加 custom-portlet-mode 元素 ,其次需要在運行期找到該形態(tài)的 portal 實現(xiàn)。如果在運行期間找不到該自定義形態(tài)的 portal 實現(xiàn),這個 portlet 就不應(yīng)該被調(diào)用
?????? 打個比方, portlet 應(yīng)用需要支持 clipsboard 以及 config 形態(tài)的 portlet ,那么部署描述器里面可能這么寫:
<portlet-app>
...
<custom-portlet-mode>
<description>Creates content for Cut and Paste</description>
<name>clipboard</name>
</custom-portlet-mode>
<custom-portlet-mode>
<description>Provides administration functions</description>
<name>config</name>
</custom-portlet-mode>
...
</portlet-app>
在《擴展 Portlet 形態(tài)》附錄中列出了建議的 portlet 形態(tài)的命名參考以及他們的使用參考。如果 portlet 在部署描述器中定義了一個自定義的形態(tài),并且 portal 容器實現(xiàn)了這種形態(tài)的話,那么 Portal 容器可以立即自動地映射這種支持形態(tài)。
8.5 GenericPorlet 渲染方法的處理
?????? GenericPorlet 通過 render 方法來分發(fā)用戶的請求給 doView , doEdit , doHelp 方法。這個指定形態(tài)分發(fā)的動作在 doDispatch 里面都會指明。如果 portal 容器提供者需要支持一種新的形態(tài),那么必須重載 doDispatch 方法。
8.6???? 定義 portlet 形態(tài)
Portlet 通過在它的部署描述器內(nèi)配置 portlet 形態(tài)來獲得它能使用的 portal 容器支持的形態(tài)。每個 Portlet 都必須支持 VIEW 形態(tài),而且 VIEW 形態(tài)無需特別指定。
下面的例子顯示了一個配置 Portlet 形態(tài)的樣本:
...
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>edit</portlet-mode>
<portlet-mode>help</portlet-mode>
...
</supports>
<supports>
<mime-type>text/vnd.wap.wml</mime-type>
<portlet-mode>help</portlet-mode>
...
</supports>
...
以上的配置說明了,該
portlet
在
html
標記語言下支持
edit ,help
形態(tài),當(dāng)然還支持默認的
view
形態(tài)。在
wml
語言環(huán)境下,支持
help
以及
view
形態(tài)。
以上是翻譯節(jié)選,以后會陸續(xù)刊出其它章節(jié)
歡迎轉(zhuǎn)載共同交流
?