学习liferay是个痛苦的过程,整天都在那么多包和类中徘徊.一个功能涉及的文件比较多.
这段时间本想照着上次哪个贴里面的做一个操作数据库的例子,发现很多不会,包括关于spring,hibernate有很多配置都看
不懂,只能一步步来,首先先从struts开始配置,至于数据,只能是自己add进去
1.首先先写一个portlet 继承StrutsPortlet
public class MyPortalPortlet extends StrutsPortlet {
public void doView(RenderRequest req, RenderResponse res)
throws IOException, PortletException {
PortletPreferences prefs = req.getPreferences();
super.doView(req, res);
}
}
2.再写一个 action继承portletAction 这里的action其实就是struts中的action,只是继承了liferay自己的类
public class MyPortletAction extends PortletAction {
public ActionForward render(
ActionMapping mapping, ActionForm form, PortletConfig config,
RenderRequest req, RenderResponse res)
throws Exception {
//if 如果窗口最小话的时候跳转到..(后面介绍),else如果最大化就跳转到view_users
if (req.getWindowState().equals(WindowState.NORMAL)) {
System.out.println("portlet.ext.myuser.view");
return mapping.findForward("portlet.ext.myuser.view");
}
else {
List users = new ArrayList();
users.add("One");
users.add("Two");
users.add("Three");
req.setAttribute("users", users);
System.out.println("portlet.ext.myuser.view_users");
return mapping.findForward("portlet.ext.myuser.view_users");
}
}
}
3.接着开始配置配置文件
先配置struts的相关配置文件,由于我是从ext开发,所以就直接配置struts-config-ext.xml(用过struts的都知道这个配置文件),在action-mapping中增加一个action,这里记着这个path的值,后面有用到
<action path="/ext/myuser/view_users" type="com.ext.portlet.myuser.action.MyPortletAction">
<forward name="portlet.ext.myuser.view" path="portlet.ext.myuser.view" />
<forward name="portlet.ext.myuser.view_users" path="portlet.ext.myuser.view_users" />
</action>
接着配struts的标签指向,配置tiles-defs-ext.xml,增加两个跳转,继承portlet,进行跳转,<definition name="">与上面的struts 的<forward name 是完全相同的
<definition name="portlet.ext.myuser.view" extends="portlet">
<put name="portlet_content" value="/portlet/ext/myuser/view.jsp" />
</definition>
<definition name="portlet.ext.myuser.view_users" extends="portlet">
<put name="portlet_content" value="/portlet/ext/myuser/view_users.jsp" />
</definition>
4.接着配置portlet配置文件,portlet-ext.xml,增加新类,也就是上面写的MyPortalPortlet ,给他进行注册,
<portlet>
<portlet-name>lpyPortal</portlet-name>
<display-name>Hello lpy</display-name>
<portlet-class>com.ext.portlet.myuser.MyPortalPortlet</portlet-class>
<init-param>
<name>view-action</name>
<value>/ext/myuser/view_users</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<resource-bundle>com.liferay.portlet.StrutsResourceBundle</resource-bundle>
<portlet-preferences>
<preference>
<name>user</name>
<value>123</value>
</preference>
</portlet-preferences>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
这里的portlet-name的名字给liferay给注册时需要用到
portlet-class写的就是上面写的MyPortalPortlet,连接jsp和action的portlet.
下面解释下上面的信息
<init-param>
<name>view-action</name>
<value>/ext/myuser/view_users</value>
</init-param>
初始参数这里的value就是上面struts-config-ext.xml里面的path路径
<portlet-preferences>
<preference>
<name>user</name>
<value>123</value>
</preference>
</portlet-preferences>
这里的参数选择,设置一个默认值,传递的函数是user,默认值是123,在JSP中我们可以通过prefs.getValue("user", "")来获取,其实就是写在默认跳转的view.jsp中,给他赋一个默认的值,具体可以参看下面的view.jsp的写法
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
配置该portlet 的角色,以及角色的显示名字,角色名role-name 是由portlet.xml 中进行定义
该portlet 由com.liferay.portal.apache.bridges.struts.LiferayStrutsPortletURLImpl 类的实例进行处理,允许使用模版和实时刷新页面。可配置administrator,guest,power-user,user 四种角色对其拥有不同的权限。至于权限的研究,嘿嘿,慢慢来
5.配置liferay-portlet-ext.xml
<portlet>
<portlet-name>lpyPortal</portlet-name>
<struts-path>ext/myuser</struts-path>
<use-default-template>false</use-default-template>
<restore-current-view>false</restore-current-view>
<private-request-attributes>false</private-request-attributes>
<private-session-attributes>false</private-session-attributes>
<render-weight>1</render-weight>
</portlet>
这里的<use-default-template>设置为false如果为true的话,会出现2个标题,效果图片参见附件1,这里的
portlet-name要和portlet-ext.xml里面写的portlet的name一样
6.写JSP文件
先写一个init.jsp 创建路径ext-web/docroot/html/portlet/ext/myuser/
<%@ include file="/html/common/init.jsp" %>
<portlet:defineObjects />
<% PortletPreferences prefs = renderRequest.getPreferences();%>
代码就几行,include包含的JSP,其实是一个通用的,如果看下里面的内容,可以发现里面的内容基本上把很多常用的类和变 量都包括在里面了
再写一个view.jsp
<%@ include file="/html/portlet/ext/myuser/init.jsp"%>
<a href="<portlet:renderURL windowState="<%= WindowState.MAXIMIZED.toString() %>" />">MyUser <%= prefs.getValue("user", "") %> </a>
这里的prefs是上面init.jsp中创建的,portal的页面就是一个jsp包含一个jsp,没有<html>这样的标签,因为都是统一的,只有table,或者div或者include,就一直往里面加内容
写一个view_users.jsp
<%@ include file="/html/portlet/ext/myuser/init.jsp" %>
<% List users = (List)request.getAttribute("users");%>
<%
for (int i = 0; i < users.size(); i++) {
String userName = (String)users.get(i);
%>
<%= userName %><br>
<%
}
%>
这个JSP上的值是从上面写的action中获取来的,可以参看上面MyPortletAction中的
req.setAttribute("users", users);
最后在liferay-dislpay.xml中注册你写的portlet
<category name="category.sample">
<portlet id="47" />
<portlet id="48" />
<portlet id="50" />
<portlet id="53" />
<portlet id="66" />
<portlet id="lpy"/>
<portlet id="lpyPortal"/>
<portlet id="EXT_1" />
</category>
我是把他放在samplet中,这看个人喜好
应该差不多了.
最后用ant编译下,把他们全部编译到你安装的服务器,
- 大小: 14.3 KB
分享到:
相关推荐
【Liferay 学习笔记】 Liferay 是一款开源的企业级门户平台,用于构建和管理复杂的Web应用程序。在本文中,我们将深入探讨如何在Liferay中进行一些基本操作和配置,如修改公司LOGO、增加用户、创建页面以及理解...
转正技术贴Liferay框架工作学习笔记
以下是对“Liferay学习笔记1”的详细解释和相关知识点的深入探讨: ### Liferay概述 Liferay是一款开源的企业级门户平台,它提供了一个强大的框架,用于构建企业级应用程序和服务。Liferay的核心功能包括内容管理...
### Liferay6官方培训学习笔记:开发环境搭建与数据库配置详解 #### 一、开发环境搭建 Liferay是一款基于Java的开源企业级门户框架,它提供了丰富的功能和强大的定制能力,适用于构建各种复杂的Web应用程序。在...
### Liferay Portal 6 学习之路:全面解析与实践指南 #### 一、Portal与Liferay Portal简介 ##### Portal概念 Portal,即门户网站,...希望本篇学习笔记能够帮助大家更好地理解和掌握 Liferay Portal 6 的相关知识。
本超学习文档将深入探讨Liferay的核心特性、开发环境、Java技术的应用以及Hibernate在Liferay中的整合。 一、Liferay 框架 Liferay 框架基于Java EE(Enterprise Edition)标准,它提供了丰富的API和工具,允许...
liferay笔记.doc
### Liferay的学习路径 对于初学者来说,了解Liferay的基本架构和技术栈是非常重要的。以下是一些关键的学习点: #### 1. **理解Liferay架构** - Liferay采用了一种模块化的设计思想,其中最核心的部分是Liferay ...
与其他商业产品相比,Liferay具有成本低、开源等特点,但也存在文档较少、学习成本较高等问题。 - JSR168是Java社区进程发布的一个规范,其主要目的是提供不同Portal产品之间的互通性,通过定义Portal实现规范和...
《Liferay开发文档5.0》不仅是一本学习Liferay开发的指南,更是深入理解Liferay架构、掌握高级开发技巧的宝典。通过系统地学习文档中的知识点,开发者将能够在Liferay平台上高效地开发出功能丰富、界面美观的应用,...
在社区论坛如iteye(博文链接:https://pengjj2.iteye.com/blog/2018082)上,可以找到许多关于Liferay的问题解答、经验分享和案例研究,这些资源对于学习者来说是宝贵的财富。参与讨论、提问和解答问题,能加速学习...
### Liferay Portal 5.0新特性解析 #### 引言 随着技术的不断发展与进步,企业对于协作工具的需求日益增长。Liferay Portal 5.0作为一款领先的企业级开源门户解决方案,在此版本中引入了多项增强功能,尤其是其...
【Liferay 6.1 开发学习】 Liferay 是一款开源的企业级门户平台,它提供了内容管理、社交网络、协作工具等功能,适用于构建企业内部或对外的网站和工作平台。Liferay 6.1 版本是其重要的里程碑,包含了丰富的功能...
根据提供的信息,我们可以推断出文档与Liferay学习相关,但由于文档内容似乎包含了大量乱码,因此我们将基于标题和描述中的关键词“Liferay”来进行详细的知识点总结。 ### Liferay基础知识 #### 1. 什么是Liferay...
liferay笔记
**Liferay 6 + Struts 2 集成项目详解** 在Web应用程序开发中,Liferay Portal和Struts 2框架的结合使用可以提供强大的功能和灵活性。Liferay是一款开源的企业级门户平台,它提供了内容管理、社交网络、工作流等...
2. **Portlet开发**:介绍portlet生命周期,MVC Portlet的工作原理,以及如何使用Liferay的开发工具创建和调试portlet。 3. **主题与布局**:Liferay的主题决定了门户的外观,而布局决定了页面元素的排布。如何...
- **编写简单JSPPortlet:**通过学习如何编写JSPPortlet,开发者能够理解Liferay Portlet的基本结构和工作原理,为更复杂的开发项目打下坚实的基础。 综上所述,Liferay Portal不仅为企业提供了一个强大的门户平台...
Struts2和Liferay的集成是一项常见的企业级应用开发任务,尤其对于构建可扩展且功能丰富的Web应用程序至关重要。Struts2是一个强大的MVC框架,它提供了处理用户请求、业务逻辑和视图展示的能力,而Liferay则是一个...
标题中的“Liferay搭建Struts2”意味着我们将讨论如何在Liferay门户平台上集成并使用Struts2框架。Liferay是一款开源的企业级Portal解决方案,而Struts2是一个流行的Java web应用程序开发框架,它基于Model-View-...