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