上一篇设置好了开发工具eclipse IDE,现在就用eclipse来创建一个porlet。
File->new Liferay Prorlet
登录portal
点击“添加”,就会在右边出现了。。。。发现点击hello-liferay的时候会报错,而且,明明是只创建了一个prolet而已,为什么会有两个示例。。。看下配置
liferay-dispaly.xml
<display>
<category name="category.sample">
<portlet id="hello-liferay" />
<portlet id="HelloLiferay"></portlet>
</category>
</display>
category.sample就是说下面的那些porlet会显示在“示例”目录下。它这里居然生成了2个porlet
在看下porlet.xml
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
<portlet>
<portlet-name>hello-liferay</portlet-name>
<display-name>hello-liferay</display-name>
<portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
<init-param>
<name>view-template</name>
<value>/view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>hello-liferay</title>
<short-title>hello-liferay</short-title>
<keywords>hello-liferay</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<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>
<portlet-name>HelloLiferay</portlet-name>
<display-name>HelloLiferay</display-name>
<portlet-class>com.fei.porlet.HelloLiferay</portlet-class>
<init-param>
<name>view-template</name>
<value>/html/helloliferay/view.jsp</value>
</init-param>
<init-param>
<name>edit-template</name>
<value>/html/helloliferay/edit.jsp</value>
</init-param>
<init-param>
<name>help-template</name>
<value>/html/helloliferay/help.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
<portlet-mode>edit</portlet-mode>
<portlet-mode>help</portlet-mode>
</supports>
<portlet-info>
<title>HelloLiferay</title>
<short-title>HelloLiferay</short-title>
<keywords></keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<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-app>
porlet-name和上面的liferay-display.xml中的porlet-id对应。再看下porlet-class,只有HelloLiferay对应的portlet-class才是我们自定义的。既然这样,那就把不需要的干掉,试试看。
liferay-display.xml
<display>
<category name="category.sample">
<portlet id="HelloLiferay"></portlet>
</category>
</display>
porlet.xml
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
<portlet>
<portlet-name>HelloLiferay</portlet-name>
<display-name>HelloLiferay</display-name>
<portlet-class>com.fei.porlet.HelloLiferay</portlet-class>
<init-param>
<name>view-template</name>
<value>/html/helloliferay/view.jsp</value>
</init-param>
<init-param>
<name>edit-template</name>
<value>/html/helloliferay/edit.jsp</value>
</init-param>
<init-param>
<name>help-template</name>
<value>/html/helloliferay/help.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
<portlet-mode>edit</portlet-mode>
<portlet-mode>help</portlet-mode>
</supports>
<portlet-info>
<title>HelloLiferay</title>
<short-title>HelloLiferay</short-title>
<keywords></keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<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-app>
liferay-porlet.xml
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>HelloLiferay</portlet-name>
<icon>/icon.png</icon>
<instanceable>true</instanceable>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>
/js/main.js
</footer-portlet-javascript>
<css-class-wrapper>helloliferay-portlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
保存,tomcat会自动更新。。。刷新浏览器,发现示例下只有HelloLiferay了
因为HelloLiferay,创建的时候,选择了运行添加多个实例,所以添加后,它没变灰,如果想设置会,一个页面只能添加一次,则
注意pom.xml中的
<profiles>
<profile>
<id>Liferay-v6.2-CE-(Tomcat-7)</id>
<properties>
<liferay.version>6.2.5</liferay.version>
<liferay.maven.plugin.version>6.2.5</liferay.maven.plugin.version>
<liferay.auto.deploy.dir>F:\liferaytest\liferay-portal-6.2-ce-ga6\deploy</liferay.auto.deploy.dir>
<liferay.app.server.deploy.dir>F:\liferaytest\liferay-portal-6.2-ce-ga6\tomcat-7.0.62\webapps</liferay.app.server.deploy.dir>
<liferay.app.server.lib.global.dir>F:\liferaytest\liferay-portal-6.2-ce-ga6\tomcat-7.0.62\lib\ext</liferay.app.server.lib.global.dir>
<liferay.app.server.portal.dir>F:\liferaytest\liferay-portal-6.2-ce-ga6\tomcat-7.0.62\webapps\ROOT</liferay.app.server.portal.dir>
</properties>
</profile>
</profiles>
liferay的tomcat路径不能错。。。。当然,这时eclipse自动生成的(看第一幅图)。。。。实际项目中,每个开发人的tomcat路径不同,如果每个人都修改,那就不好了,所以这个profile配置可以迁移到maven的settings.xml中,项目从svn或git下载后
选择settings.xml就可以了