首页 > 解决方案 > Java servlet 未接收请求属性

问题描述

我目前正在开发一个网络应用程序,我想在其中更新用户操作是否成功。我试图通过设置请求属性并从一个 servlet 转发到下一个来实现这一点。但是,该属性在接收控制器中始终为空。

设置属性的代码块:

try {
                updateXRef(request, response, cmds);
            } catch (Exception e) {
                request.setAttribute("results", "Error encountered. Contact system administrator.");
                push(request, response);
            }
            request.setAttribute("results", "Update Successful");
            push(request, response);
        }

        else {
            push(request, response);
        }

发送到另一个 servlet 的方法:

private void push(HttpServletRequest request, HttpServletResponse response) {
        String url = "/PushServer";

        try {
            request.getServletContext().getRequestDispatcher(url).forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

以及处理请求的 servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        if(FileFactory.getFileOperationsObject() == null || request.getParameterValues("input") == null) {

            initiliaze(request, response);

            String url = "/Display.jsp"; 
            request.setAttribute("xRefFile", FileFactory.getXRefFileObjects());
            request.setAttribute("platforms",FileFactory.getUniqueSortedPlatforms());
            request.setAttribute("showModal", 0);

            if(request.getParameter("results") == null) {
                request.setAttribute("results", "Update Pending");
            }

            request.getServletContext().getRequestDispatcher(url).forward(request, response);

        }

我唯一的猜测是正在以某种方式生成一个新请求。如果这确实是正在发生的事情 - 我该如何避免它?

标签: javajspservlets

解决方案


问题是方法选择。

request.getParameter("yourAttributeName")仅适用于检索表单数据 ( <form></form>) - 也就是来自 .jsp 页面的数据 - 以及查询参数。

如果希望从一个 Java servlet向另一个 Java servlet发送信息,如上面的代码,必须使用:

request.getAttribute("myAttributeName");


推荐阅读