【发布时间】:2015-11-06 23:42:58
【问题描述】:
我正在尝试设置一个通用使用环境下拉选择(用于查询),它位于它自己的 JSP 中,该 JSP 包含在标头 jsp 中,该标头 jsp 包含在向 servlet 提交请求的 jsp 中。但是,我无法从 jsp 访问环境下拉列表的参数(它返回 null)。 JSP的写法如下:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="base" value ="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale-1.0">
<link rel="stylesheet" href="${base}/path/to/css/maintEnvironmentCss.css"/>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-10">
<div class="form-group">
<form>
<select class="env-group" id="idname" name="idname">
//Properly formatted options (removed on SO for security reasons)
</select>
</form>
</div>
</div>
</div>
</div>
</html>
使用 JSTL 包含在标头中
<jsp:include page="/path/to/jsps/maintEnvironment.jsp"></jsp:include>
这也包含在请求的 jsp 中:
<jsp:include page="/path/to/jsps/header2.jsp"></jsp:include>
我试着这样称呼它:
UnStickReports usr = new UnStickReports(request.getParameter("idname"));
但是每当我调试时,返回的参数都是空的,这使得 servlet 抛出空指针异常。我知道这是一个继承问题,但是,除了手动将菜单手动放在每个页面上之外,我该怎么做才能使参数可继承?我确实尝试将选择设置为会话变量,但这也失败了。
<script>
function setEnv() {
var env = document.getElementById("idname");
session.setAttribute("attName",env.value);
}
</script>
使用这个,我仍然得到 null 的值:
UnStickReports usr = new UnStickReports((String) request.getAttribute("attName"));
我从其他类似问题中看到了以下建议:
<jsp:include page="callee.jsp" />
<jsp:param name="param2" value="value2" />
<jsp:param name="param3" value="value3" />
</jsp:include>
但这会覆盖应该从该 jsp 传递的值,这对我来说似乎没有意义,除非您需要不需要用户输入的硬编码值。
【问题讨论】:
-
如果您的最终jsp中有多个表单,那么根据您提交的表单,数据将在服务器上可用。查看页面源以了解更多信息。您提交的表单数据将是通过请求发送到服务器。
-
我不确定我是否理解您在说什么。您是说我在 Servlet 中的请求对象下有一个可以访问的函数,还是说 jsp 上有一个可以访问的函数?如果是后者,我将如何访问/转发信息到 servlet?
-
简单来说,首先你需要确定Request对象中发送到服务器的数据是什么。检查服务器的request.getParameterMap()。
标签: java jsp servlets inheritance jstl