liferay5.0 学习笔记2

学习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编译下,把他们全部编译到你安装的服务器,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值