当前位置: 代码迷 >> 综合 >> liferay Portal对象
  详细解决方案

liferay Portal对象

热度:58   发布时间:2024-01-12 08:55:39.0

Portal对象
1、request
   portal中的request分为Action Request 和 Render Request两种类型。
   因此Portlet接口定义了两种方法分别处理不同的Request
   processAction(ActionRequest request,ActionResponse response) 和 render(RenderRequest request,RenderResponse response)
   从某种意义上讲render方法类似与Servlet中的service方法,doView doEdit doHelp 有类似与doGet doPost方法
   A、portletRequest分为RenderRequest 和 ActionRequest ,分别有renderURL和ActionURL来触发
      actionURL适用于确实的action(行为)情况下。比如:表单提交后Persistent状态的改变,session的改变,perference的修改等等。
      renderURL通常使用处理Porlet的导航。
      ActionURL举例:
      <%
PortletURL  pu = renderResponse.createActionURL();
pu.setParameter("Action","Login");
      %>
      <form name="form1" method="post" action="<%=pu.toString()%>">
      RenderURL举例:
      <%
PortletURL pu = renderResponse.createRenderURL();
pu.setParameter("page",number);
      %>
      <a href="<%=pu.toString()%>">下一页</a>
   B、renderURL和actionURL的处理方式
      当客户端请求是一个renderURL触发的时候,Portal服务器会调用该Protal页面所有的Porlet的render方法
      当客户端请求的是一个actionURL触发的时候,Portal服务器会调用该页面所有的Porlet的processAction方法,
         然后再调用render方法。
   C、RenderRequest 和 ActionRequest的parameter参数作用范围
      当客户端请求一个actionRequest触发时,所有parameter参数的取得都必须在processAction方法中处理。
      如果要在renderRequest获取该参数,必须
      String str = req.getParameter("Action")
      response.setRenderParameter("Action"str)
2、response对象
   Response对象也有两种:RenderResponse和ActionResponse,分别用来封装对应的RenderRequest和ActionRequest的返回信息
   他们的父类PorletResponse拥有setPorperty 和 getPorperty两个方法用来传递信息给Portal容器。
  
   ActionResponse主要用来处理以下功能:
   A、重定向
   B、改变窗口状态、Portlet模式
   C、传递parameter参数到RenderRequest中
   RenderResponse主要处理:
   A、设置ContentType
   B、得到OutputStream 和 Writer 对象,用来输出页面内容
   C、Buffering缓冲
   D、设定Portlet的标题,但是必须在Portlet输出前调用,否则别忽略
3、PortletConfig对象
   和ServletConfig对象相似,PortletConfig对象提供对Portlet初始化信息及PortletContext对象存取的方法
   和ServletConfig d对象不同的是,PortletConfig对象提供对Porlet的标题等资源的I18N支持,可以通过设定不同的Resource
   Bundle文件以提供多种语言支持
4、Portal的Session
   Portal的Session分为Applicaton Scope 和Portlet Scope 而至区别:
   A、Application Scope范围的Session中保存的对象,对于同一个Portal应用范围的所有Portlet都是可用的
   B、Porlet Scope范围的Session中保存的对象,只对本Porlet可用,其他Portlet即使在同一应用中,也不可用。
5、Preference对象
   Preference对象被设计用来实现用户的个性化设置,可以帮助用户对Portlet进行符合用户需求的显示定制和行为定制,
   可以替代部分的数据库功能。更需要指出的是,Preference对象只是用来存取简单的配置信息,并不能完全替代数据库应用。
   Preference对象对于配置信息采用键值的形式存取,用户可以将需要的信息暂时保存在Preference中。
   举例:
   PortletPreference p = req.getPortletPreferences();
   p.setValue("username","zhangzunwei");
   p.store();
   Perference
   对性用来存取用户的个性化信息,所以不同用户的Preference对象不能共享。
   可以在portlet.xml中配置Preference信息:
   <portlet-preferences>
<preference>
       <name>username</name>
       <value>zhangzunwei</value>
       <read-only>true</read-only>
</preference>
    </portlet-preferences>
    另外,还可以配套使用PreferencesValidator对性,对Portlet的Preference在存贮之前进行验证,保证数据稳定性。

  相关解决方案