Получить ключевое слово поиска со стойками Liferay

Я хочу получить ключевые слова для поиска с помощью портлета поиска. Я увидел, что в URL появляются: "struts_action=/search/seach", затем я искал в strut-config.xml и найти:
action path = "/ search / search" forward = "portlet.search.search"

Я пытаюсь сделать стойку, но я не знаю много о стойках, и это не работает. Это код "liferay-hook.xml":

<portal-properties>portal.properties</portal-properties>
<struts-action>
    <struts-action-path>/search/search</struts-action-path>
    <struts-action-impl>com.segmentationProject.searchAction.struts.SearchAction</struts-action-impl>
</struts-action>

portal.properties: auth.public.paths = / search / search

SearchAction.java:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.liferay.portal.kernel.struts.BaseStrutsAction;

public class SearchAction extends BaseStrutsPortletAction {  
    @Override
    public void processAction(StrutsPortletAction originalStrutsPortletAction, PortletConfig portletConfig, ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
        System.out.println("inside the process ");
        super.processAction(originalStrutsPortletAction, portletConfig, actionRequest, actionResponse);
    }

    @Override
    public String render(StrutsPortletAction originalStrutsPortletAction,PortletConfig portletConfig, RenderRequest renderRequest, RenderResponse renderResponse) throws Exception {
    // TODO Auto-generated method stub
        System.out.println("inside the render");
        return super.render(portletConfig, renderRequest, renderResponse);
    }
}

Любая идея о том, что я пропал или не так? Я только хочу получить ключевые слова, а затем сделать поиск в обычном режиме. Спасибо!

2 ответа

Я думаю, что этот сделает работу

String keywords = ParamUtil.getString(actionRequest, "keywords");

ParamUtil используйте пространство имен портлета для получения параметров.

Я думаю, что вы должны использовать originalStrutsPortletAction вместо super.

super.processAction(originalStrutsPortletAction, portletConfig, actionRequest, actionResponse);
}

просто замените super на originalStrutsPortletAction

    originalStrutsPortletAction .processAction(originalStrutsPortletAction, portletConfig, actionRequest, actionResponse);
}
Другие вопросы по тегам