我在网站上开发了一个痕迹,我在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已解析,但信封级别未解析。出了什么问题?
答案 0 :(得分:0)
我认为问题在于您的详情页面。您使用的是request.getParameter()
还是request.getAttribute()
。你应该使用后者。