没有在java servlet中的请求中设置的jsp中获取属性?

时间:2013-12-13 11:06:24

标签: java jsp servlets

我正在使用gwt,gwt包含在我的jsp中,如下所示

一旦我点击菜单项,它就会带我到包含gwt模块的myJsp.jsp,我正在显示带有上传按钮的表单。 一旦我点击上传,它正在卸载一个文件(并获取blobKey)并返回到相同的jsp(myJsp.jsp),但在此之前调度到此jsp(第二次)我在请求中设置了一个属性。

我试图通过使用$ {ImportId}在jsp中获取该属性,但我得到空值。

以下是我的jsp。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<html>
  <head>
    <script type="text/javascript" language="javascript" src="/ActivityLog/ActivityLog.nocache.js">
    </script>
  </head>
  <body>
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' class="iframe"></iframe>
    <div class="wrapper"> 
      <input type="hidden" name="memcacheHeaderId" value="${importId}" />
      <div id="activityLogModule">
      </div>
    </div>
    </div>
</body>
</html>
  1. 执行gwt模块时,$ {importId}为空。
  2. 第二次发送到这个jsp之前,我正在设置request.setAttribute("importId", importId);但是在jsp中我没有得到这个值
  3. 可能是什么原因,是否存在范围问题?

2 个答案:

答案 0 :(得分:1)

唯一的原因是您在请求中设置了值,因为您的请求已完成,服务器会放弃您的请求。

答案 1 :(得分:0)

设置时

  

request.setAttribute(“importId”,importId);

您必须重定向到JSP,这会为服务器创建一个新的JSP请求。含义服务器创建一个新的请求对象,并且不会记住设置了属性的旧对象。

我不太了解gwt,但在JSP-Servlet中,有2种机制1)重定向和2)转发。我们使用Forward机制转到具有相同请求对象的JSP,因此在JSP中也可以使用设置到Object中的属性,因为它是Request中传递的请求对象的副本。

所以请检查你在GWT中可以做些什么。