如何在请求后保留请求数据

时间:2014-07-18 18:13:55

标签: java jquery html jsp

我正在使用JSP。我有这个用例:

主页包含搜索框,提交按钮和下拉列表。用户从下拉列表中选择内容后,在搜索框中输入查询并点击“提交”按钮,它会根据查询进入同一页面并显示一些结果。

主页包含其他页面(例如results.jsp,searchtables.jsp),这些页面仅在搜索返回某些结果后才可见。我希望在显示这些结果后保留在主页(下拉列表和搜索框)中输入的值。

因此,如果主页为/ home,则在单击该按钮后,它仍然位于同一页面中并附加/搜索,并显示检索到的结果。

有没有办法实现这个目标?

由于

2 个答案:

答案 0 :(得分:1)

如果使用转发而非重定向,则可以在控制器中使用request属性:

request.setAttribute("searchVal", searchVal); 
request.setAttribute("dropdownVal", dropdownVal);

然后在jsp页面上,您可以像这样访问值:

<input type="text" name="search" value="${searchVal}"/> //will be empty if searchVal is never set


<select>
    <option value="val1" ${dropdownVal == 'val1' ? 'selected="selected"' : ''}>val1</option>
</select>

如果您正在进行重定向,则可以将值附加为url查询,然后使用jsp页面上的${params.search}${params.dropdown}访问它们。

最后一个选项是在HTML5 web storage objects中使用localStorage,它在客户端而不是服务器端存储东西,但是你需要编写一些javascript代码来处理它。

答案 1 :(得分:0)

由于表单正在提交给自己,您可以检查帖子参数,如果它们存在,请将它们添加到表单中。

<input type="text" name="txtbox" value="<%= request.getParameter("txtbox") %>">

然后,您可以使用下拉值执行类似的操作,如果这是通过POST传递的项目,则将“选择”添加到该选项

<select name="mySelect">
    <option value="1" <% if(request.getParameter("mySelect") == "1"){ out.print("selected") } %>>Option 1</option>
    <option value="2" <% if(request.getParameter("mySelect") == "2"){ out.print("selected") } %>>Option 2</option>
</select>