Portlet應(yīng)用開發(fā)(JSR168)Part_第1頁
Portlet應(yīng)用開發(fā)(JSR168)Part_第2頁
Portlet應(yīng)用開發(fā)(JSR168)Part_第3頁
Portlet應(yīng)用開發(fā)(JSR168)Part_第4頁
Portlet應(yīng)用開發(fā)(JSR168)Part_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Portlet 應(yīng)用開發(fā), Part 6Portlet 的 Preference對象By Terry.liSpiritSeekerS本部分將闡述了Portlet的Preference對象, Preference 對象是Portlet所特有的對象,用來實現(xiàn)用戶的個性化設(shè)置,可以替代部分?jǐn)?shù)據(jù)庫的功能.· 為什么使用Preference 對象?Preference 主要用來幫助用戶對Portlet進(jìn)行符合用戶需要的顯示定制或者行為定制.舉一個簡單的例子: 用戶有一個用來顯示商品列表的Portlet, 可能有些用戶需要在Portlet窗口中每頁顯示10個商品, 但是也有用戶需要在Portle

2、t的窗口中顯示20個或者是30個商品. 這樣的話, 對于同一個Portlet應(yīng)用, 用戶可以定制自己滿意的用戶界面.以上的Preference 使用有一個前提, Preference對象只用來存取簡單的配置信息,并不能替代數(shù)據(jù)庫的應(yīng)用.· 如何使用Preference 對象?Preference對象對于Portlet的配置信息存取使用KEY=VALUE , 或者是 KEY=VALUES 形式. 如果你的Portlet有需要使用用戶定制的元素,可以將其加入到Preference對象中. 如下:PortletPreference p= req.getPortletPreferences(

3、);p.setValue(“PageSize”,”10”);p.store();· Preference的屬性的作用范圍因為Preference的屬性是用來存取用戶的個性化信息的, 因此兩個用戶之間不可以share屬性.注: Pluto因為是單用戶的Portal/PortletContainer的實現(xiàn),因此如果兩個用戶使用同一個preference屬性名稱,互相會有沖突.· 如何配置Preference 屬性?在Portlet.xml中設(shè)置Preference的初始或者是默認(rèn)屬性. 如下:<portlet-preferences> <preference&

4、gt; <name>PageSize</name> <value>20</value> <read-only>true</read-only> </preference></portlet-preferences>在以上配置中配置了一個preference 屬性PageSize, 注意read-only標(biāo)簽中設(shè)置了true, 那么這樣一來這個preference 屬性便不可以通過編程更改.· 為什么使用PreferencesValidator對象?PreferencesValidator對

5、象允許Portlet的preference在被儲存之前進(jìn)行驗證.用以保證portlet的Preference存取的正確性.· 如何配置PreferencesValidator對象 ?Servlet開發(fā)中有一種叫filter Servlet, 它的配置和PreferencesValidator的配置方式非常相似, 只不過一個在web.xml中配置, 而另一個在portlet.xml中配置. 如下XML:<portlet-preferences><preferences-validator>com.sss.PortletValidator</preferen

6、ces-validator></portlet-preferences>· Case Study以下我們將使用Preference和PreferencesValidator對象來開發(fā)一個簡單的Portlet實現(xiàn)一個簡單的用戶登陸auditing. 以下是代碼片段:1. Portlet (PortletPreferenceExample.java) PortletPreferences prefs = request.getPreferences();prefs.setValue("audit_enabled",audit_enabled);pre

7、fs.store(); 以上代碼片段將一個Portlet的配置參數(shù)audit_enabled賦予相應(yīng)的值. PortletPreferences prefs = request.getPreferences();prefs.reset("audit_enabled");prefs.store(); 以上代碼片段將一個Portlet的配置參數(shù)audit_enabled重新reset到初始時Portlet.xml配置文件中audit_enabled所對應(yīng)的值.2. JSP (edit_preference.jsp)<%PortletPreferences prefs =

8、renderRequest.getPreferences();String flag=prefs.getValue("audit_enabled","").toString();%> Edit 模式下Fragment 用來取得 Preference 的KEY值的代碼 .3. JSP (view_portletpreference.jsp)<%PortletPreferences prefs = renderRequest.getPreferences();String flag=prefs.getValue("audit_enabl

9、ed","").toString();%> View 模式下Fragment 用來取得 Preference 的KEY值的代碼. 4. PreferencesValidator (PortletPreferencesValidator.java)public class PortletPreferencesValidator implements PreferencesValidator public void validate(PortletPreferences preferences)throws ValidatorException PortletP

10、referencesValidator執(zhí)行了PreferencesValidator接口, 其具體的功能實現(xiàn)由validate方法執(zhí)行. 我們這里將應(yīng)用邏輯在validate方法中執(zhí)行. 其功能主要是驗證KEY所對應(yīng)的值是否符合要求.(本例中Validator將驗證audit_enabled所對應(yīng)的值是否為”0”或者”1”, 否則將拋出錯誤).· Preference Portlet的運(yùn)行結(jié)果將Tomcat啟動, 在IE 或者 NetScape 中敲入以下地址:http:/localhost:8080/pluto/portal 單擊Preference Example Page后可以

11、看到如下頁面(圖6-1)圖6-1輸入”SpiritSeekerS” , 單擊 Enter Button, 進(jìn)入如下頁面 (圖6-2)圖6-2進(jìn)入edit mode , 將enable audit 選項選中 , 如下(圖6-3):圖6-3單擊 SAVE button , 將回到view mode , 再次登陸后, 如下圖(圖6-4)圖6-4· 源代碼及Portlet相關(guān)配置文件1. Portlet (PortletPreferenceExample.java)package portlets.portletpreference;/* * author terry * * To chan

12、ge the template for this generated type comment go to * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments */import javax.portlet.*;import java.io.IOException;public class PortletPreferenceExample extends GenericPortlet public void doView(RenderRequest request, Ren

13、derResponse response)throws PortletException, IOException response.setContentType("text/html");String jspName = getPortletConfig().getInitParameter("view");PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(jspName);rd.include(request, response); public void d

14、oEdit(RenderRequest request, RenderResponse response)throws PortletException, IOException response.setContentType("text/html");String jspName = getPortletConfig().getInitParameter("edit");PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(jspName);rd.include(r

15、equest, response); public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException String action = request.getParameter("action");String audit_enabled = request.getParameter("audit_enabled");if(action.equals("edit")

16、&&audit_enabled!=null)PortletPreferences prefs = request.getPreferences();prefs.setValue("audit_enabled",audit_enabled);prefs.store();else if(action.equals("edit")PortletPreferences prefs = request.getPreferences();prefs.reset("audit_enabled");prefs.store();else

17、 if(action.equals("view")String usr= request.getParameter("usr");response.setRenderParameter("usr",usr);elsethrow new PortletException("Unexpected Error!"); 2. JSP (view_portletpreference.jsp)<% page session="false" %><% page import="ja

18、vax.portlet.*"%><% page import="java.util.*"%><% taglib uri='/WEB-INF/tld/portlet.tld' prefix='portlet'%><portlet:defineObjects/><BR><%PortletPreferences prefs = renderRequest.getPreferences();String flag=prefs.getValue("audit_enabled

19、","").toString();%><portlet:actionURL portletMode="view" var="url"><portlet:param name="action" value="view"/></portlet:actionURL><form method=post action=<%=url%>><table border=0><tr><td><b&

20、gt;Name:</b></td><td><input type=text name=usr></tr><tr><td colspan=2 align=right><input type=submit value="Enter"></td></tr></table></form><%String usr=renderRequest.getParameter("usr");if(usr!=null)%>

21、Welcome, <%=usr%> ! <BR><%><%if(flag.equals("1")%>=<BR><table border=0><tr><td><b>INFO:</b> <%=usr.toUpperCase()%> login at </td><td><%=new Date().toString()%></td></tr></table>=<BR>

22、<%>3. JSP (edit_portletpreference.jsp)<% page session="false" %><% page import="javax.portlet.*"%><% taglib uri='/WEB-INF/tld/portlet.tld' prefix='portlet'%><portlet:defineObjects/><BR><%PortletPreferences prefs = renderReque

23、st.getPreferences();String flag=prefs.getValue("audit_enabled","").toString();%><portlet:actionURL portletMode="view" var="url"><portlet:param name="action" value="edit"/></portlet:actionURL><form method=post action=

24、<%=url%>><table border=0><tr><td><b>Auditing Enabled:</b></td><td><input type=checkbox name="audit_enabled" value="1" <%=flag.equals("1")?"checked":""%>></td></tr><tr>&l

25、t;td colspan=2 align=right><input type=submit value="SAVE"></td></tr></table></form>4. Preference Validator (PortletPreferencesValidator.java)package portlets.portletpreference;/* * author terry * * To change the template for this generated type comment go

26、to * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments */import javax.portlet.*;import java.util.*;public class PortletPreferencesValidator implements PreferencesValidatorpublic static final String AUDITING_ENABLED="1"public static final String AUDITING_

27、DISABLED="0"public void validate(PortletPreferences preferences)throws ValidatorExceptionEnumeration prefnms = preferences.getNames();Collection errKeys = new ArrayList();while (prefnms.hasMoreElements() String prefnm = prefnms.nextElement().toString(); String value = preferences.getValue(

28、prefnm, AUDITING_DISABLED); System.out.println(value); if(value.equals(AUDITING_ENABLED)|(value.equals(AUDITING_DISABLED)System.out.println("# INFO: VALID KEY."); elseSystem.out.println("# ERROR: INVALID KEY.");throw new ValidatorException("INVALID KEY",new Throwable(&q

29、uot;Incorrect Value!"),errKeys); 5. Portlet.xml <!- Preference Example -><portlet><description>PortletPreference Example</description><portlet-name>PortletPreferenceExample</portlet-name><display-name>PortletPreferenceExample</display-name><por

30、tlet-class>portlets.portletpreference.PortletPreferenceExample</portlet-class><init-param><name>view</name><value>/fragments/portletpreference/view_portletpreference.jsp</value></init-param><init-param><name>edit</name><value>/frag

31、ments/portletpreference/edit_portletpreference.jsp</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>

32、;<supported-locale>en</supported-locale><portlet-info><title>PortletPreference Example</title><short-title>PortletPreference</short-title><keywords>PortletPreference</keywords></portlet-info><portlet-preferences><preference><

33、name>audit_enabled</name><value>0</value></preference><preferences-validator>portlets.portletpreference.PortletPreferencesValidator</preferences-validator></portlet-preferences></portlet> 6. pageregistry.xml <!- Preference Example Page -> <fragment name="preferencepage" type="page"> <navigation> <title>Preference Example Page</title> <description>Preference Example Page</description>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論