我在liferay中开发了一个portlet我有一个表(实体),我希望在部署portlet时用数据填充它。 如何在部署操作期间调用类的方法?
答案 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) {
...
}
}