2013-01-16 31 views
3

我正在使用Liferay上的Spring MVC portlets,我正在尋找一種方法將ActionRequest中的RequestParam傳遞給RenderRequest。 這是我的2功能的簽名。將@RequestParam從@ActionMapping傳遞給@RenderMapping

@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)); does'nt工作要麼...

做一種方式來傳遞param而不修改渲染方法? 感謝

回答

3

我不明白,如果這是你想要的,但如果你想打電話從操作方法的渲染方法,連同:

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

您正確添加(設置呈現參數「行動」),你應該添加ficheId參數

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

通過render方法預期爲好。

相關問題