参数不在jsp

时间:2016-02-08 10:23:46

标签: java jsp servlets http-request-parameters

我在网站上开发了一个痕迹,我在jsp中使用了以下代码:

<form action="envelope">
                <input type="hidden" id="id" name="id" value="">
                <input type="hidden" name="q" value="${fn:escapeXml(param.q)}">
                <button type="submit" id="back" class="btn btn-sm btn-primary">
                    <span class="fa fa-chevron-left"></span> Back
                </button>
                <ol class="breadcrumb">
                  <li id="file"><a href="envelope.jsp?id=${envLev0}">File</a></li>
                  <li id="format"><a href="envelope.jsp?id=${envLev1}">Format</a></li>
                  <li id="batch"><a href="envelope.jsp?id=${envLev2}">Batch</a></li>
                  <li id="payment" class="active">Payment</li>
                </ol>
            </form>

我使用以下代码来解析DetailsControllerServlet中的参数:

 @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String index = request.getParameter(FIELD_INDEX);
        String type = request.getParameter(FIELD_TYPE);
        String id = request.getParameter(FIELD_ID);

        Map<String, Object> map = searchDetails(index, id);
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String key = entry.getKey();
            Object value = entry.getValue();
            if(FIELD_BUSINESS_DATA.equals(key)) {
                value = XML_UTILS.toHtml((String)value);
            }
            request.setAttribute(key, value);
            if(LOGGER.isDebugEnabled()) {
                LOGGER.debug("Added '" + key + "'='" + value + "' to the request.");
            }
        }
        request.setAttribute(FIELD_INDEX, index);
        request.setAttribute(FIELD_ID, id);


        String detailsPage;
        switch (type) {
            case "FileEnvelope":
            case "FormatEnvelope":
            case "BatchEnvelope":
                detailsPage = ENVELOPE_JSP;
                break;
            case "Payment":
                detailsPage = PAYMENT_JSP;
                request.setAttribute("envLev0", 1);
                request.setAttribute("envLev1", 2);
                request.setAttribute("envLev2", 3);
                 break;
            default:
                detailsPage = DETAILS_JSP;
        }
        getServletContext().getRequestDispatcher(detailsPage).forward(request, response);
    }

当我选择付款作为类型时,我导航到付款界面,ID已解析,但信封级别未解析。出了什么问题?

1 个答案:

答案 0 :(得分:0)

我认为问题在于您的详情页面。您使用的是request.getParameter()还是request.getAttribute()。你应该使用后者。

相关问题