版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Portlet 应用开发, Part 6Portlet 的 Preference对象By Terry.liSpiritSeekerS本部分将阐述了Portlet的Preference对象, Preference 对象是Portlet所特有的对象,用来实现用户的个性化设置,可以替代部分数据库的功能.· 为什么使用Preference 对象?Preference 主要用来帮助用户对Portlet进行符合用户需要的显示定制或者行为定制.举一个简单的例子: 用户有一个用来显示商品列表的Portlet, 可能有些用户需要在Portlet窗口中每页显示10个商品, 但是也有用户需要在Portle
2、t的窗口中显示20个或者是30个商品. 这样的话, 对于同一个Portlet应用, 用户可以定制自己满意的用户界面.以上的Preference 使用有一个前提, Preference对象只用来存取简单的配置信息,并不能替代数据库的应用.· 如何使用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的实现,因此如果两个用户使用同一个preference属性名称,互相会有冲突.· 如何配置Preference 属性?在Portlet.xml中设置Preference的初始或者是默认属性. 如下:<portlet-preferences> <preference&
4、gt; <name>PageSize</name> <value>20</value> <read-only>true</read-only> </preference></portlet-preferences>在以上配置中配置了一个preference 属性PageSize, 注意read-only标签中设置了true, 那么这样一来这个preference 属性便不可以通过编程更改.· 为什么使用PreferencesValidator对象?PreferencesValidator对
5、象允许Portlet的preference在被储存之前进行验证.用以保证portlet的Preference存取的正确性.· 如何配置PreferencesValidator对象 ?Servlet开发中有一种叫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对象来开发一个简单的Portlet实现一个简单的用户登陆auditing. 以下是代码片段:1. Portlet (PortletPreferenceExample.java) PortletPreferences prefs = request.getPreferences();prefs.setValue("audit_enabled",audit_enabled);pre
7、fs.store(); 以上代码片段将一个Portlet的配置参数audit_enabled赋予相应的值. PortletPreferences prefs = request.getPreferences();prefs.reset("audit_enabled");prefs.store(); 以上代码片段将一个Portlet的配置参数audit_enabled重新reset到初始时Portlet.xml配置文件中audit_enabled所对应的值.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执行了PreferencesValidator接口, 其具体的功能实现由validate方法执行. 我们这里将应用逻辑在validate方法中执行. 其功能主要是验证KEY所对应的值是否符合要求.(本例中Validator将验证audit_enabled所对应的值是否为”0”或者”1”, 否则将抛出错误).· Preference Portlet的运行结果将Tomcat启动, 在IE 或者 NetScape 中敲入以下地址:http:/localhost:8080/pluto/portal 单击Preference Example Page后可以
11、看到如下页面(图6-1)图6-1输入”SpiritSeekerS” , 单击 Enter Button, 进入如下页面 (图6-2)图6-2进入edit mode , 将enable audit 选项选中 , 如下(图6-3):图6-3单击 SAVE button , 将回到view mode , 再次登陆后, 如下图(图6-4)图6-4· 源代码及Portlet相关配置文件1. Portlet (PortletPreferenceExample.java)package portlets.portletpreference;/* * author terry * * To chan
12、ge the template for this generated type comment go to * Window>Preferences>Java>Code Generation>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>Preferences>Java>Code Generation>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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62037-2:2021/AMD1:2025 FR Amendment 1 - Passive RF and microwave devices,intermodulation level measurement - Part 2: Measurement of passive intermodulation in coaxial c
- 2025年高职劳动与社会保障(劳动与社会保障教育心理学案例分析)试题及答案
- 2025年高职食品加工(食品发酵技术)试题及答案
- 工程机械制造安全培训课件
- 制氧中心安全培训
- 工程安全管理课件模板
- 工程图纸培训
- 2026年反洗钱知识竞赛培训试题及答案
- 慢阻肺肺康复依从性:睡眠质量干预策略
- 学校综合办公室成本控制方法
- 2024年中国诚通控股集团有限公司所出资企业招聘真题
- DB37-T4975-2025分布式光伏直采直控技术规范
- 画框制作合同范本
- 2025年河北邯郸武安市公开招聘食品检测专业技术人员4名备考考试题库及答案解析
- 反霸凌宣传课件
- 民航空管局面试题及答案
- 2026年海南卫生健康职业学院单招综合素质考试题库参考答案详解
- 挡土墙设计相关规范及技术要点
- 2025年10月自考14701中外服装史(本).试题及答案
- 2024年广东省春季高考(学考)语文真题(试题+解析)
- 大学生志愿者礼仪规范
评论
0/150
提交评论