【问题标题】:JSP not getting request parametersJSP没有获取请求参数
【发布时间】:2018-04-19 00:46:38
【问题描述】:

我有一个 JSP 页面,它在显示时看不到任何请求参数值。最初我尝试从 Servlet 传递参数,但没有成功。作为测试,我还尝试从 html 页面上的表单调用该 JSP。

我在 Servlet 中做什么:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String sampleValue = sampleModel.getMyValue();
    request.setAttribute("param", sampleValue);

    RequestDispatcher view = request.getRequestDispatcher("samplePage.jsp");
    view.forward(request, response);
}

我如何通过带有隐藏字段的表单从 HTML 页面调用 JSP:

<div>
    <form action="samplePage.jsp" method="post">
        <input name="param" type="hidden" value="sampleValue"/>
        <input type="submit" value="Update">
    </form>
</div>

最后我在 JSP 上有什么:

<body>
    <p>Some info: ${param}</p>
</body>

正如我所说的,问题是请求属性“param”的值,可以说是“sampleValue”,没有在页面上呈现。

我已经看过很多例子,我认为我的代码是正确的。还有其他原因导致这可能不起作用吗?我正在使用 Tomcat 8.5 运行一个 Maven 项目。

编辑:到目前为止,我发现问题不在于表达式语言不起作用。请求属性在到达 JSP 时没有任何值。

【问题讨论】:

  • 感谢您的建议,但这不起作用。该属性是一个简单的值,因此应该使用 ${param} 访问。 ${param.param} 用于嵌套属性。
  • 不,第一个参数是访问请求参数第二个参数是因为你叫它参数。
  • 您发布到 JSP 而不是您的 servlet?这里 jsp 中的操作看起来不像 servlet 路径:&lt;form action="samplePage.jsp" method="post"&gt;
  • 是的,我是。但正如我提到的,我这样做只是为了测试。无论如何,当参数通过 RequestDispatcher 从 Servlet 发送时,它再次不起作用 - 因为代码是正确的,所以应该是这种情况。

标签: java jsp servlets web-applications


【解决方案1】:

请确保在您的 jsp 页面中 isELIgnored 为 false。在您的 jsp 顶部使用波纹管标记。

&lt;%@ page isELIgnored="false" %&gt;

您也可以通过${2 * 4} 确保此输出在JSP 上打印为8

【讨论】:

    【解决方案2】:

    您的表单正在使用 method=post。您的 Servlet 代码应该位于 doPost 方法 而不是 doGet

    【讨论】:

    • 是的,我知道,但这不是问题所在。我只是将表单用作调用 JSP 页面的另一种方式。不管是post还是get,还是看不到参数。
    • 如果是这样,可能表达式语言由于某种原因无法正常工作。尝试用 JSP 上的老式 替换 ${param}。
    • 是的,我也尝试了该脚本,但现在它只给出了 null 结果。顺便谢谢你的建议
    • 分析您的代码我意识到您正在设置一个具有某些价值的“属性”。但请注意,在 HTML 表单的隐藏字段中设置的信息作为请求参数发送到 Servlet。
    • 这是一个公平的观点,但在任何一种情况下,JSP 都应该能够看到与请求参数关联的值。
    【解决方案3】:

    对于 Servlet 情况,将 samplePage.jsp 中的 ${param} 替换为

    <%=request.getAttribute("param")%>
    

    对于 JSP 情况,将 samplePage.jsp 中的 ${param} 替换为

    <%=request.getParameter("param")%>
    

    【讨论】:

      【解决方案4】:

      首先,检查变量 sampleValue 是否正在捕获您从 JSP 传递的字符串,如下所示

      String sampleValue = sampleModel.getMyValue();
      System.out.println(sampleValue);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-21
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-03
        相关资源
        最近更新 更多