【问题标题】:Liferay Hook calling extension methodLiferay Hook 调用扩展方法
【发布时间】:2013-06-20 15:31:03
【问题描述】:

我在 liferay 钩子中有新的操作,理想情况下将调用在扩展中创建的方法。但是在运行时执行动作时,它会抛出异常 java.lang.ClassNotFoundException 对于在扩展中创建的方法。 有没有人在 liferay hook 中创建了类似的操作?如果是的话,遇到这个问题的解决方法是什么?

这是我的代码:

public class ExampleStrutsAction extends BaseStrutsAction { 
    public String execute( HttpServletRequest request, HttpServletResponse response) throws Exception {
        String name = ParamUtil.get(request, "name", "World");
        ThemeDisplay themeDisplay= (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        BSCDynamicDataListLocalServiceUtil.cloneDynamicDataListPageInSuborganization(the‌​meDisplay, name);
        return "/portal/sample.jsp"; 
    }
} 

【问题讨论】:

  • 我的操作非常基础,只是尝试调用我的扩展中的方法,由于 ClassNotFound 异常而失败:
  • 能否请您展示您非常基本的方法。没有看到就不可能回答..
  • public class ExampleStrutsAction extends BaseStrutsAction { public String execute( HttpServletRequest request, HttpServletResponse response) throws Exception { String name = ParamUtil.get(request, "name", "World"); ThemeDisplay themeDisplay= (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); BSCDynamicDataListLocalServiceUtil.cloneDynamicDataListPageInSuborganization(themeDisplay, name);返回“/portal/sample.jsp”; } }
  • 因为我是新成员,所以无法在答案中发布,抱歉
  • portal-hook.properties,你必须注册这个钩子。你这样做了吗?我的 java 源文件的资源文件夹下有这个 portal-hook.properties

标签: liferay


【解决方案1】:

试试下面的代码,

hook.xml

<hook>
    <portal-properties>portal.properties</portal-properties>
    <language-properties>
        content/Language.properties
    </language-properties>
    <custom-jsp-dir>/META-INF/custom_jsps</custom-jsp-dir>
    <struts-action>
        <struts-action-path>/my_account/edit_user</struts-action-path>
        <struts-action-impl>com.test.hook.action.EditUserAction</struts-action-impl>
    </struts-action>
    <struts-action>
        <struts-action-path>/users_admin/edit_user</struts-action-path>
        <struts-action-impl>com.test.hook.action.EditUserAction</struts-action-impl>
    </struts-action>

</hook>

EditUserAction 类

public class EditUserAction extends BaseStrutsPortletAction
{
    @Override
    public void processAction(final StrutsPortletAction originalStrutsPortletAction, final PortletConfig portletConfig,
            final ActionRequest actionRequest, final ActionResponse actionResponse) throws Exception
    {
        // add your custom code
        originalStrutsPortletAction.processAction(portletConfig, actionRequest, actionResponse);
    }

    @Override
    public String render(final StrutsPortletAction originalStrutsPortletAction, final PortletConfig portletConfig, final RenderRequest renderRequest,
            final RenderResponse renderResponse) throws Exception
    {
        //add your custom code
        return originalStrutsPortletAction.render(portletConfig, renderRequest, renderResponse);
    }

}

我在控制面板中为 EditUserAction 创建了上面的钩子 希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2016-11-25
    相关资源
    最近更新 更多