如何从包含在请求jsp中的jsp中包含的jsp获取参数

时间:2015-11-06 23:42:59

标签: java jsp servlets inheritance jstl

我正在尝试设置一个通用的使用环境下拉选择(用于查询),该选择位于其自己的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"));

但每当我调试时,返回的参数为null,这使得servlet抛出nullpointerexception。我知道这是一个继承问题,但是,如果没有手动将菜单手动放在每个页面上,我该怎么做才能使参数可继承?我确实尝试将选择设置为会话变量,但也失败了。

<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传递的值,除非您需要不需要用户输入的硬编码值,否则这对我来说似乎没用。

1 个答案:

答案 0 :(得分:0)

我要做的第一件事就是给表单一个方法,一个动作然后确保控件正在通过,我相信你会找到一些东西。

这个JSP代码或JavaScript是什么?看起来对我来说都不是。

select