如何定义一个动作在liferay portlet中部署?

时间:2014-01-19 12:32:22

标签: liferay

我在liferay中开发了一个portlet我有一个表(实体),我希望在部署portlet时用数据填充它。 如何在部署操作期间调用类的方法?

3 个答案:

答案 0 :(得分:5)

最后我解决了它。

我必须在src文件夹中的某处创建我的动作类。

package com.example.portal.events;

import java.util.Arrays;

import com.liferay.portal.kernel.events.SimpleAction;

public class ExampleStartupAction extends SimpleAction {

    public void run(String[] ids) {

    System.out.println("############################ This is a Startup Action ##########################"+ ids.length+" "+Arrays.toString(ids));

    }

}

然后你必须在WEB-INF的src文件夹中创建一个名为portal.properties的文件,并将此行添加到它:

application.startup.events=com.example.portal.events.ExampleStartupAction

最后,您必须编辑liferay-hook.xml文件并在上面添加以下行:

<portal-properties>portal.properties</portal-properties>

方法运行,将在portlet的deply期间运行。

答案 1 :(得分:1)

您还可以覆盖并使用portlet类的init()方法。

答案 2 :(得分:-1)

通过使用servlet上下文初始化程序,您可以在上下文初始化和销毁​​期间执行操作。 在web.xml中添加这个..

    <?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>


    <listener>
        <listener-class>MyListenerClass</listener-class>
    </listener>

</web-app>

并实现监听器类

   import javax.servlet.*;
    import javax.servlet.http.*;

    public class MyListenerClass implements ServletContextListener {

      public void contextInitialized(ServletContextEvent e) {
...
}

public void contextDestroyed(ServletContextEvent e) {
...
}
}