【问题标题】:JSP page not reading submitted for valuesJSP 页面未读取提交的值
【发布时间】:2010-01-21 17:38:37
【问题描述】:

我正在开发基于 jsp 的应用程序的前端。我们正在使用在 weblogic 上运行的 spring。

我有一个带有提交给自身的表单的页面,我正在尝试访问我使用 javascript 设置的隐藏字段的值。

 <form method="post">

  <input type="hidden" name="choosenDateFrom" value="test1" />
  <input type="hidden" name="choosenDateTo" value="test2"  />
.... more code

但是当我在同一页面上使用代码时:

 <c:choose>
  <c:when test="${param.choosenDateFrom!=null}">
   <c:out value="${param.choosenDateFrom}" />
 </c:when>
   </c:choose>

参数未显示在页面上。我错过了什么?我虽然这是这样做的标准方式。

难道是因为我们使用的是 MVC 框架,所以我不能像这样传递参数吗?

【问题讨论】:

  • 你能显示这个 JSP 的控制器代码吗?

标签: java jsp jstl


【解决方案1】:

您是否在 webapp 中安装了 JSTL 并在 JSP 中声明?

检查生成的 HTML 输出(在浏览器中打开页面,选择 查看源代码)。它应该包含 no 任何 JSTL 代码的痕迹。如果是这样,那么您可能只需要先安装 JSTL。只需将jstl-1.2.jar 放到webapp 的/WEB-INF/lib 中,然后按照JSTL core TLD 在JSP 顶部声明taglib:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

如果这仍然不能解决问题,那么显然意味着一个全新的请求(即发生了 重定向),或者您使用了错误的参数名称。使用&lt;c:out value="${pageContext.request.parameterMap}" /&gt; 查看所有名称。

根据您的疑问:

难道是因为我们使用的是 MVC 框架,所以我不能像这样传递参数吗?

这完全取决于您使用的是哪一个。不提它并不能帮助我们给出更好的答案。但总的来说,${param} 应该保持不变。

【讨论】:

  • 是的,我们有包含 java.sun.com/jsp/jstl/core" %> 我还能缺少什么...
  • 生成的 HTML 输出看起来如何?您是否以任何方式检查过它?
  • html很好,没有jsp的痕迹,这里可能发生了重定向
  • javax.servlet.jsp.el.ImplicitObjectELResolver$ImplicitObjects$5@5956375 是我使用
  • 哦,是的,我错误地认为它是Map。改为使用${pageContext.request.parameterMap}。无论如何,如果有重定向的方式,那么初始请求,包括它的所有参数和属性,显然在重定向的请求中是不可用的。
【解决方案2】:

您是否在您的 jsp 中包含了核心库?大多数情况下发生的事情和jsp只是忽略你的语法。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

【讨论】:

    【解决方案3】:

    您可能想使用名为 Tamper Data 的 Firefox 插件来查看您的参数是否实际发布正确。验证您没有在发布后进行重定向,因为您会丢失所有参数,因为它要求浏览器执行新请求。

    【讨论】:

      猜你喜欢
      • 2013-03-07
      • 2019-12-17
      • 2016-02-28
      • 2013-04-06
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多