刷新JSP页面后,在HTML select元素中保留选定的值

我有一个带下拉框的JSP。 我选择一个选项并提交一个。 所以现在我获得了存储在所选选项的数据库中的信息。 现在我通过在servlet中设置为自动刷新JSP(HTML页面)

//servlet code inside doGet() method HttpSession session=request.getSession(); String selUrl=request.getParameter("urlsel"); String opt=session.setAttribute("selectedUrl",selUrl); String selopt=session.getAttribute("selectedUrl"); response.setHeader("Refresh","10;url="/SiteAvailabilityServlet?ursel="+selectedUrl); //and forwarding request to result.jsp using RequestDispatcher.. 

//input.jsp代码

  abc def  

当我第一次选择abc并手动提交选项时,它会给我正确的结果并显示数据库中的详细信息。 10秒后,它将使用相同的选项abc自动刷新(我不想更改选项),但不显示值。 它正在接受

  request.getParameter("urlsel") as null after refreshing automatically. 

请帮帮我。 在result.jsp我正在使用

  

我认为如果替换此行,您的代码应该起作用:

 response.setHeader("Refresh","10;url="/SiteAvailabilityServlet?ursel="+selectedUrl); 

有了这个 :

 response.setHeader("Refresh","10;url=/SiteAvailabilityServlet?urlsel="+ selopt); 

改变的是:

  • "从标题中的URL中删除了" ,我不明白为什么它应该在那里;
  • 这是urlsel而不是ursel ;
  • 为什么selectedUrl ? 它是会话属性的名称,您想要的是会话属性的值。 既然你有( selopt ),你可能只想使用它。

您的HTML可能需要更好地处理,就此行而言, "缺失:

  

希望所有这些拼写错误都不在原始代码中。

PS :请更正你问题中的代码,以帮助每个人帮助你:)。

祝你好运。

作为已接受答案的补充,这里是一个JSP(类似于您之前的问题 ),用于展示如何在刷新页面后保留使用HTML select元素选择的值

注意: 不建议使用scriptlet 。 在下面的示例中,为了简单起见,使用了scriptlet来模拟OP在其示例中尝试执行的操作

test.jsp的

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String selectValue = request.getParameter("course"); if (selectValue != null) { session.setAttribute("savedCourse", request.getParameter("course")); } %>    Test Page     

Test Page

Choose some course


Testing submitted and saved parameter

Passed "course" parameter (will display nothing after auto REFRESH) = ${param.course}

Stored "savedCourse" attribute = ${sessionScope.savedCourse}

有关其他信息,请查看以下答案: https : //stackoverflow.com/a/17280533/814702


关于代码的一些注意事项:

  • 设置会话属性的重点是什么,并且在下一行从会话中获取此属性时,无论如何它已经可用(在selurl变量中)?

  • HttpSession #setAttribute(String name,Object value)方法不返回任何内容( void ),因此您无法将void分配给String类型的变量opt ,就像在代码中一样。 此代码将无法编译并给您一个错误: incompatible types

  • request.getParameter("urlsel")返回null的原因是因为它是刷新,因此是新请求,并且请求属性在新请求之间重置 。 阅读此处: Servlet重定向到同一页面,并显示错误消息 。