4

私はLiferayでSpringMVCポートレットを使用しており、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));どちらも機能しません...

renderメソッドを変更せずにパラメータを転送する方法はありますか?ありがとう

4

1 に答える 1

3

これがあなたが望むものかどうかはわかりませんが、アクション メソッドからレンダリング メソッドを呼び出したい場合は、次のものを一緒に使用します。

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

正しく追加した (レンダリング パラメーター「アクション」を設定する) 場合は、ficheId パラメーターを追加する必要があります。

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

render メソッドによっても期待されます。

于 2013-05-13T15:59:07.673 に答える