jsp丢失属性从后端传递

时间:2015-02-14 21:32:38

标签: java html jsp liferay portlet

我的项目遇到了问题。这是我的代码的一部分,我认为这会导致问题。

    @Override
public void dLMSreceiveInput(ActionRequest actionRequest,
        ActionResponse actionResponse) throws ParseException {

    dynamicLogic = actionRequest.getParameter("setlogic");
    logic = actionRequest.getParameter("outerlogic");
    PortletPreferences prefs = actionRequest.getPreferences();
    dLMSSendRender(dLMSCreateQuery(actionRequest), actionResponse,
            actionRequest);
}

public void dLMSSendRender(List<DLFileEntry> foundFiles,
        ActionResponse actionResponse, ActionRequest actionRequest) {
    if (foundFiles.size() == 0) {
        actionResponse.setRenderParameter("jspPage", "/notFound.jsp");
    } else {
        actionRequest.setAttribute("DLMSFoundFiles", foundFiles);
        actionRequest.setAttribute("urls", fileURL(themeDisplay, foundFiles));
        actionResponse.setRenderParameter("jspPage", "/edit.jsp");
    }
}

...我认为通过设置RenderParameter来重定向存在问题。

actionResponse.setRenderParameter("jspPage", "/edit.jsp");

内容呈现,但当我在另一个portlet中执行操作时,它会消失。 当我想显示我的结果时,任何想法如何正确重定向?谢谢。

1 个答案:

答案 0 :(得分:0)

解决。通过保存会话属性,而不是actionRequest属性。

    HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest);
HttpSession session = request.getSession();
session.setAttribute("DLMSFoundFiles", foundFiles);
session.setAttribute("urls",fileDownloadURL(themeDisplay, foundFiles));
actionResponse.setRenderParameter("jspPage", "/edit.jsp");

在jsp中

 List<DLFileEntry> DLMSFoundFiles1 = (List<DLFileEntry>) session.getAttribute("DLMSFoundFiles");
 Map<String, String> urls = (Map<String, String>) session.getAttribute("urls");

将其留在这里以供进一步使用。