我在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));
也不起作用......
是否存在传输param而不修改render方法的方法? 谢谢
答案 0 :(得分:3)
我不明白这是否是您想要的,但是如果您想从action方法中调用render方法,并且:
response.setRenderParameter("action", "view_fiche");
你正确添加的(设置渲染参数“action”),你应该添加ficheId参数
response.setRenderParameter("ficheId", Long.toString(ficheId));
也是渲染方法所期望的。