在Hook环境中添加自定义方法?

时间:2012-03-17 04:29:25

标签: hook liferay-6

我正在使用hook ...

将新方法添加到CalEventLocalServiceImpl

我的代码是..

public class MyCalendarLocalServiceImpl extends CalEventLocalServiceWrapper {

    public MyCalendarLocalServiceImpl(CalEventLocalService calEventLocalService) {
        super(calEventLocalService);
        // TODO Auto-generated constructor stub
    }

    public List getUserData(long userId) throws SystemException{
        DynamicQuery query=DynamicQueryFactoryUtil.forClass(CalEvent.class)
        .add(PropertyFactoryUtil.forName("userId").eq(userId));
        List deatils=CalEventLocalServiceUtil.dynamicQuery(query);

        return deatils;
    }
}

liferay-hook.xml

<service>
    <service-type>
        com.liferay.portlet.calendar.service.CalEventLocalService
    </service-type>
    <service-impl>
        com.liferay.portlet.calendar.service.impl.MyCalendarLocalServiceImpl
    </service-impl>
</service>

我的问题是如何从jsp文件中使用 getUserData 。 任何人都可以帮助我......

我认为你没有我的问题...我希望从日历中基于 USERID 的事件列表...来实现这个任务我需要做什么?

2 个答案:

答案 0 :(得分:4)

我假设getUserData()没有被覆盖,而是一个新方法(目前无法查找)。这不是覆盖服务时可以执行的操作。相反,您必须添加新服务并将其提供给门户网站。

请记住,在门户类加载器中运行自定义(“挂钩”)jsp,而重载服务在钩子的类加载器中运行。因此,如果您创建新服务并使service.jar可用于Liferay(例如,在全局类路径上),则可以从JSP调用它。 Liferay服务的界面无法通过重载服务进行扩展。

如果getUserData()已经在界面中(正如我所说我目前无法查找),你只需要从你的jsp中调用CalendarLocalServiceUtil,它就会被委托给你的包装器。

答案 1 :(得分:3)

只是为了添加奥拉夫的回答和评论......

如果你想用&#34; getUsetData&#34;扩展CalEventLocalService服务。并且在一个jsp中使用它比构建自己的服务可能有点矫枉过正。只需将您的代码放在&#34; getUserData&#34;在jsp中。否则请遵循奥拉夫的建议。