Liferay7: @Reference (target = "(component.name = String.Here)") Как я могу установить String.Here? - PullRequest
0 голосов
/ 09 июля 2020

Я работаю над портлетом Liferay MVC, я ввел protected MVCActionCommand mvcActionCommand; с @Reference(target = "(component.name=String.Here)", unbind = "-"), чтобы выполнять некоторые функции внутри метода doProcessAction () моего MVCActionCommand компонента.

Мой вопрос в том, как я могу установить атрибут component.name in the target of @Reference, должен ли я помещать какую-либо строку или я должен помещать определенную?

1 Ответ

1 голос
/ 09 июля 2020

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 команд.

...