我正在开发基于 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 框架,所以我不能像这样传递参数?
最佳答案
您是否在 webapp 中安装了 JSTL 并在 JSP 中声明?
检查生成的 HTML 输出(在浏览器中打开页面,选择查看源代码)。它应该没有任何 JSTL 代码的踪迹。如果是这样,那么您可能只需要先安装 JSTL。只需放下 jstl-1.2.jar在 webapp 的 /WEB-INF/lib
并根据 JSTL core TLD 在 JSP 顶部声明标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
如果仍然不能解决问题,那么显然有一个全新的请求方法(即发生了重定向),或者您使用了错误的参数名称。使用 <c:out value="${pageContext.request.parameterMap}" />
查看所有名称。
根据您的疑问:
Could it be that since we are using a MVC framework I can't pass params around like this?
这完全取决于您使用的是哪一个。不提它并不能帮助我们给出更好的答案。但一般来说 ${param}
应该保持不变。
关于java - JSP 页面未读取提交的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111451/