【问题标题】:JSTL with response.sendRedirect带有 response.sendRedirect 的 JSTL
【发布时间】:2014-01-07 07:44:06
【问题描述】:

为什么 jstl 不能与

一起工作(空白结果)
response.sendRedirect(url);

jstl 正在使用

request.getRequestDispatcher(url).forward(request,response);

编辑:在我的jsp中

<c:forEach items="${requestScope.(List from servlet)}" var="s">
<h1><c:out value="${s.(variable from list)}"></c:out></h1>
</c:forEach>

【问题讨论】:

  • @Aniket 我已经编辑了我的问题
  • 定义“不工作”。您意识到请求中存储的所有属性在重定向后都会丢失,对吧?
  • 不工作=我的意思是列表是空的,保存在 request.setAttribute("key",list object);如果重定向它是空的,如果我使用调度程序,则填充列表。
  • 使用调度程序比使用重定向更好吗?因为如果调度程序正在使用 servlet 的 url 而不是 jsp 页面,例如。 “page.jsp”。

标签: jsp servlets request jstl


【解决方案1】:

您似乎不明白什么是重定向。重定向包括向浏览器发送响应,告诉它向给定 URL 发送新的 GET 请求。很明显,在执行 JSP 时,您在调用 sendRedirect() 之前存储在请求中的属性不再可用,因为它是作为对另一个不同 HTTP 请求的响应而执行的。

重定向通常用作redirect-after-post 模式的一部分。否则,如果您只是想分派到 JSP 以生成构成对请求的响应的 HTML 标记,那么您需要转发。

【讨论】:

  • 就像我上面的评论一样,使用调度程序比重定向更好吗?因为调度程序正在使用 servlet 的 url。
  • 阅读我编辑的答案。在浏览器中看到 servlet 的 URL 是完全正常的,因为它是浏览器发送请求的 URL。
  • 我的网页中有这样的场景,我有一个 div
猜你喜欢
  • 1970-01-01
  • 2012-05-12
  • 2023-03-05
  • 2014-09-14
  • 2016-01-18
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多