如何创建新的(原始)struts路径?

时间:2015-04-24 02:45:35

标签: liferay liferay-6 struts-1

我尝试覆盖现有的StrutsPortletAction,然后使用现有的struts路径成功。但是,如果我尝试创建自己的struts动作路径,我似乎无法做同样的事情。

<hook>
    <custom-jsp-dir>/custom_jsps</custom-jsp-dir>
    <struts-action>
        <struts-action-path>/portal/set_viewers/</struts-action-path>
        <struts-action-impl>com.mine.blogs.hook.BlogEntryViewerStrutsPortletAction</struts-action-impl>
    </struts-action>
</hook>

eclispe IDE给了我这个错误&#34; / portal / set_viewers /&#34;不属于可能的价值观#34;当我继续部署已构建的战争时,tomcat错误为:com.liferay.portal.kernal.util.InstanceFactory can not access a member of class com.mine.blogs.hook.BlogEntryViewerStrutsPortletAction with modifiers ""

尝试使用struts-action-path /blogs/set_viewers/也失败了。

这是我正在使用的.java。实际上很基本。

package com.mine.blogs.hook;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import com.liferay.portal.kernel.struts.StrutsPortletAction;


public class BlogEntryViewerStrutsPortletAction implements StrutsPortletAction {

BlogEntryViewerStrutsPortletAction(){
    super();
}

@Override
public void processAction(
    PortletConfig arg0, ActionRequest arg1, ActionResponse arg2)
    throws Exception {

    // TODO Auto-generated method stub
    System.out.println("process1");

}

@Override
public void processAction(
    StrutsPortletAction arg0, PortletConfig arg1, ActionRequest arg2,
    ActionResponse arg3)
    throws Exception {

    // TODO Auto-generated method stub
    System.out.println("process2");

}

@Override
public String render(
    PortletConfig arg0, RenderRequest arg1, RenderResponse arg2)
    throws Exception {

    // TODO Auto-generated method stub
    System.out.println("render1");
    return null;
}

@Override
public String render(
    StrutsPortletAction arg0, PortletConfig arg1, RenderRequest arg2,
    RenderResponse arg3)
    throws Exception {

    // TODO Auto-generated method stub
    System.out.println("render2");
    return null;
}

@Override
public void serveResource(
    PortletConfig arg0, ResourceRequest arg1, ResourceResponse arg2)
    throws Exception {

    // TODO Auto-generated method stub
    System.out.println("serve1");

}

@Override
public void serveResource(
    StrutsPortletAction arg0, PortletConfig arg1, ResourceRequest arg2,
    ResourceResponse arg3)
    throws Exception {

    // TODO Auto-generated method stub
    System.out.println("serve2");

}
}

和相应的liferay-hook.xml

<hook>
    <custom-jsp-dir>/custom_jsps</custom-jsp-dir>
    <struts-action>
        <struts-action-path>/blogs_entry/set_viewers/</struts-action-path>
        <struts-action-impl>com.mine.blogs.hook.BlogEntryViewerStrutsPortletAction</struts-action-impl>
    </struts-action>
</hook>

2 个答案:

答案 0 :(得分:0)

请尝试将struts操作URL更改为以&#34; / portal&#34;开头以外的其他内容。 Liferay可能会保留&#34; / portal&#34;用于门户级别的行动路径。

例如,

        <struts-action-path>/blogs_entry/set_viewers/</struts-action-path>

答案 1 :(得分:-1)

错误是因为构造函数。我已将其删除,现在已正确部署