2010-01-20 53 views
0

我有一个JSP页面,它显示了一个来自servlet的列表,它有一个文本框用于过滤搜索结果。我在列表(表格)中选择一个项目并在完成编辑后重定向到另一个页面以编辑细节。我可以通过servlet返回到搜索页面,但我无法保留文本框中的搜索条件及其结果。怎么做?我正在考虑设置会话值并将其置于搜索页面中,这是否正确?或者还有其他方法吗?在jsp页面保留搜索条件

回答

1

将它存储在会话范围内是最简单的方法,但根据应用程序的预期程度,它可能会产生一些可伸缩性问题。

作为一种替代方法,当您在列表中选择一个项目时,您可以转发(而不是重定向,因为如果您进行重定向,则会丢失请求参数)另一个页面,将搜索查询作为参数传递给请求。一种可能性是有两个隐藏字段的表格(查询和选择的项目):

<form action="go_to_the_detail"> 
<input type="hidden" name="selectedItem" value="value_selected_item" /> 
<input type="hidden" name="query" value="query" /> 
</form> 

在编辑页面:

<form action="go_to_save_item"> 
<input type="hidden" name="query" value="query_obtained_from_the_request" /> 

item fields to be modified 
</form> 

因此,当用户结束编辑该项目时,查询将再次通过以便显示在搜索框中。

+0

感谢您的提示mr.gracia,但:-)导致另一个问题如何做到这一点?任何参考或链接 – sansknwoledge 2010-01-20 14:25:35

+0

将尝试它,并会在这里报告。 – sansknwoledge 2010-01-20 14:35:50

0

您可以通过隐含的${param}变量访问EL中的请求参数。您可以通过input type="hidden"元素在后续请求中保留请求参数。

因此,下面的基本示例应该工作。

页答:

<form action="page B"> 
    <input type="text" name="search" value="${param.search}"> 
</form> 

页B:

<form action="page A"> 
    <input type="hidden" name="search" value="${param.search}"> 
</form> 

请记住,这些会迷路,当你做一个重定向代替向前在Servlet中,只是因为重定向会创建一个全新的请求,因此会传递初始请求,包括其所有参数和属性。

+0

感谢balusc和gracia,我现在能够运行它。非常感谢 – sansknwoledge 2010-01-23 07:06:08