Измените значение формы с помощью функции Struts Action (Liferay 6.2) - PullRequest
0 голосов
/ 27 июня 2018

Я просто пытаюсь изменить значение, которое исходит из формы. Я подключил Struts Action, чтобы изменить это значение, а затем продолжил со значением по умолчанию processAction. Но он не применяет изменения.

Это мой код подключения:

public class EditRecordDisplayPortletAction extends BaseStrutsPortletAction {
    ...

    public void processAction(
            StrutsPortletAction originalStrutsPortletAction,
            PortletConfig portletConfig, ActionRequest actionRequest,
            ActionResponse actionResponse)
        throws Exception {
        ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

        ...
        //Stuff that is working here ...
        ...

        //Here I change the value that is comming from the form that should be used later:
        DynamicActionRequest dynamicActionRequest = null;
        Map<String, String[]> params = new HashMap();

        String observationInputKey = getObservationInputKey();
        params.put(observationInputKey, new String[]{"Here goes some text I have calculated in the hook."});
            dynamicActionRequest = new DynamicActionRequest(actionRequest, params, false);
        //Continues with the normal operation, but it's not using the new values:
        originalStrutsPortletAction.processAction(
            originalStrutsPortletAction, portletConfig, dynamicActionRequest,
            actionResponse);
    }
    ...

Я использую DynamicActionRequest, так как не могу изменить __actionRequest__. Ища больше информации, здесь кто-то объясняет что-то подобное, что должно работать: Обтекание actionRequest с помощью DynamicActionRequest

1 Ответ

0 голосов
/ 27 июня 2018

Следуя примеру поста на форуме, на который вы ссылаетесь, вы можете создать DynamicActionRequest намного проще. Пожалуйста, попробуйте это:

public void processAction(
        StrutsPortletAction originalStrutsPortletAction,
        PortletConfig portletConfig, ActionRequest actionRequest,
        ActionResponse actionResponse)
    throws Exception {
    ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    ...
    //Stuff that is working here ...
    ...

    DynamicActionRequest dynamicActionRequest = new DynamicActionRequest(actionRequest);

    String observationInputKey = getObservationInputKey();
    dynamicActionRequest.setParameter(observationInputKey, "Here goes some text I have calculated in the hook.");

    //Continues with the normal operation, but it's not using the new values:
    originalStrutsPortletAction.processAction(
        originalStrutsPortletAction, portletConfig, dynamicActionRequest,
        actionResponse);
}
...

Допустим, javadoc для DynamicActionRequest не содержит больше, чем имена методов, но вы указываете логический параметр inherit для конструктора как false. Это может быть вашей единственной проблемой.

...