如果我需要从servlet返回值到jsp

时间:2015-05-01 07:14:52

标签: java html jsp servlets

我是jsp / servlet的新手,并且正在使用我有许多jsp页面和servlet的应用程序。 在第一个jsp页面中,我选择了一个客户。

<select id ="sel" name="customer">
   <option>customer1</option>
   <option>customer2</option>
   <option>customer3</option>
   <option>customer4</option>
</select>

在第二个jsp页面中,它显示了与该客户相关的菜单(例如我选择配置并转到第三个jsp页面)

<% HttpSession session = request.getSession(true);
   String chos_cust=request.getParameter("customer");
   session.setAttribute("cust_menu",chos_cust); %>

   ....
<%= session.getAttribute("cust_menu")%>

在第三个jsp页面中,我选择与该客户相关的附件(每个客户有很多类别) 这里运行sql查询以将类别显示为单选按钮:

  <input type="radio" name="chos_gr" value="${groups.group_name}"checked > ${groups.group_name}

在第四个jsp页面中,根据所选类别,它将显示子类别。在这个jsp页面中,我有三个div 在隐藏式的html表单中。在第一个div列表中的产品已经显示,第二个div用于添加产品,在最后一个div产品中可以删除。

  String config_gr = request.getParameter("chos_gr");
  session.setAttribute("config_menu",config_gr);

我已经使用servlet来执行这些操作(添加,删除)。它运行良好,但是当我添加或删除产品并在servlet中使用requestDispstcher / forward返回到最后一个jsp以查看结果(产品列表)时 在类别中显示null,在产品列表中没有显示任何内容。

如果我应该将servlet中category的值返回到最后一个jsp? 有人能告诉我问题是什么吗?

我无法为此帖添加评论。正如@underdog建议我在最后一个jsp中使用了$ {sessionScope.config_menu},它仍然显示类别为nu​​ll。这很奇怪,因为当我返回到最后一个jsp以查看结果时我获得了客户价值,但没有类别。

2 个答案:

答案 0 :(得分:0)

您正在添加会话属性中的所有对象/值。使用请求调度程序,您可以将流转发到带有请求和放大器的jsp。响应对象。请求对象不包含您在会话对象中设置的客户的信息。

在jsp中尝试访问会话范围中的值。 ssh -fN -L 9999:localhost:9999 myuser@1.11.11.111 会为您提供所需的输出。

答案 1 :(得分:-1)

请考虑使用以下内容,而不是使用response.sendRedirect(url)

RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request,response); 

使用getRequestDispatcher()的上述代码将允许您使用dispatcher.forward包含您的调用servlet的请求,其中包含您缺少的会话属性。

[注意:OP已经在做上述事情]

[UPDATE]

基于您建议在<input type="hidden" name="myfield">字段中编码某些参数的方式,我怀疑,您没有做任何其他事情来存储值。这意味着,第一次使用前一个请求中的参数设置它们,但是在使用dispatcher.forward时,这不会发生。

对于要使用适当值启动的字段,它们需要通过请求参数(例如GET参数,在URL中编码)提供,或者通过{{1}在JSP本身内设置或类似的代码。我也错过了能够验证的部分代码。

使用dispatcher.forward(),您可能没有设置所需的参数。