component.name target имя класса MVC команды. Поэтому вам нужно указать имя класса, включая имя пакета.
Чтобы ввести переменную экземпляра mvcActionCommand , вы можете использовать что-то вроде этого:
@Reference(target = "(component.name=com.test.service.impl.TestServiceImp)",
unbind = "-")
public void setMvcActionCommand(MVCActionCommand mvcActionCommand) {
this.mvcActionCommand = mvcActionCommand;
}
Я написал полный пример здесь:
JAVA:
@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);
}
}
JSP:
<portlet:actionURL var="sayHelloURL" name="/hello">
<portlet:param name="mvcActionCommand" value="/hello" />
</portlet:actionURL>
Проверьте это пример тоже на Github .
См. Этот Учебник для получения дополнительных сведений о переопределении MVC команд.