4

我正在使用 Liferay 上的 Spring MVC portlet,我正在寻找一种将 RequestParam 从 ActionRequest 传递到 RenderRequest 的方法。这是我的 2 函数的签名。

    @ActionMapping(params="action=bookmark_fiche")
    public void bookmarkFicheRef(@RequestParam long ficheId, ActionRequest request, ActionResponse response){

        ...
        response.setRenderParameter("action", "view_fiche");
    }

    @RenderMapping (params="action=view_fiche")
    public String showFiche(@RequestParam long ficheId, ModelMap model, RenderRequest request, RenderResponse response){
        ...
    }

渲染功能 showFiche 被其他链接使用,使用时工作正常

<portlet:renderURL var="rowURL" >
    <portlet:param name="action" value="view_fiche" />
    <portlet:param name="ficheId" value="${fiche.ficheId}" />
</portlet:renderURL>

但如果我使用

<portlet:actionURL var="boookmarkFicheRefURL">
    <portlet:param name="action" value="bookmark_fiche" />
    <portlet:param name="ficheId" value="${SEARCH_CONTAINER_RESULT_ROW.object.ficheId}" />
</portlet:actionURL>

动作阶段成功但渲染阶段失败并出现错误:

09:24:39,132 ERROR [http-bio-8080-exec-5][render_portlet_jsp:154] org.springframework.web.portlet.bind.MissingPortletRequestParameterException: Required long parameter 'ficheId' is not present

response.setAttribute("ficheId", Long.toString(ficheId));也不起作用...

是否存在在不修改渲染方法的情况下传输参数的方法?谢谢

4

1 回答 1

3

我不明白这是否是您想要的,但如果您想从 action 方法调用 render 方法,以及:

response.setRenderParameter("action", "view_fiche");

您正确添加的(设置渲染参数“action”),您应该添加 ficheId 参数

response.setRenderParameter("ficheId", Long.toString(ficheId));

render 方法也期望。

于 2013-05-13T15:59:07.673 回答