【问题标题】:How to get parameter from a jsp that is included in a jsp that is included in the requesting jsp如何从包含在请求jsp中的jsp中获取参数
【发布时间】: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


【解决方案1】:

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

还有什么是 JSP 代码或 JavaScript?在我看来两者都不是。

<script>
    function setEnv() {
        var env = document.getElementById("idname");
        session.setAttribute("attName",env.value);
    }
</script>

【讨论】:

  • 该部分是 JavaScript。我正在寻找一种从 jsp 设置会话变量的方法,这就是我在搜索中发现的。是的,我有点晚意识到它不涉及任何表单提交,现在我正在摸索寻找一种方法将其间接包含在主要提交中。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 2013-07-26
相关资源
最近更新 更多