刷新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
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重定向到同一页面,并显示错误消息 。