Liferay7:@Reference(target=";(component.name=String.Here)";)如何设置String.Here?

Liferay7:@Reference(target=";(component.name=String.Here)";)如何设置String.Here?,liferay,osgi,portlet,liferay-7,Liferay,Osgi,Portlet,Liferay 7,我正在使用Liferay PortletMVC,我注入了受保护的MVCActionCommand MVCActionCommand使用@Reference(target=“(component.name=String.Here)”,取消绑定=“-”以在我的MVCActionCommand组件的doProcessAction()方法中执行一些函数 我的问题是如何在@Reference属性的目标中设置component.name,我应该放置任何字符串还是应该放置一个已定义的字符串?component

我正在使用Liferay PortletMVC,我注入了
受保护的MVCActionCommand MVCActionCommand
使用
@Reference(target=“(component.name=String.Here)”,取消绑定=“-”
以在我的MVCActionCommand组件的doProcessAction()方法中执行一些函数


我的问题是如何在@Reference属性的目标中设置
component.name,我应该放置任何字符串还是应该放置一个已定义的字符串?

component.name以MVC命令类名为目标。所以您需要提供类名,包括它的包名

要注入实例变量mvcActionCommand,可以使用如下方法:

  @Reference(target = "(component.name=com.test.service.impl.TestServiceImp)", 
            unbind = "-")
    public void setMvcActionCommand(MVCActionCommand mvcActionCommand) {
        this.mvcActionCommand = mvcActionCommand;
    }
我在这里写了一个完整的例子:

爪哇:

JSP:


把这个也检查一下


有关重写MVC命令的更多详细信息,请参见此。

Hi Ilyas,感谢您的回复,但在我提供了类名(包括其包名)后,我得到了此异常[PortletServlet:119]javax.portlet.PortletException:javax.portlet.PortletException:processAction方法未实现。下面是processAction@Override受保护的void DopProcessAction(ActionRequest ActionRequest,ActionResponse ActionResponse)抛出异常的签名{Hi@m.irouch,您需要有效的class component.name,请检查我的最新修改Great Ilyas,谢谢您的帮助,现在已解决。除您所说的之外,component.name应该是一个有效的Liferay组件,就像component组件一样:source:
@Component(
        immediate = true,
        property = {
                "javax.portlet.name=YOU_COMPONENT_NAME",
                "mvc.command.name=/hello"
        },
        service = MVCActionCommand.class
)
public class LoginTestCommand extends BaseMVCActionCommand {

    protected MVCActionCommand mvcActionCommand;

    @Reference(target = "(component.name=com.liferay.login.web.internal.portlet.action.LoginMVCActionCommand)",
            unbind = "-")
    public void setMvcActionCommand(MVCActionCommand mvcActionCommand) {
        this.mvcActionCommand = mvcActionCommand;
    }

    @Override
    protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        System.out.println( "Login account doProcessAction" );
        mvcActionCommand.processAction(actionRequest, actionResponse);
    }
}
<portlet:actionURL var="sayHelloURL" name="/hello">
    <portlet:param name="mvcActionCommand" value="/hello" />
</portlet:actionURL>