【问题标题】:preserve search criteria in jsp page在 jsp 页面中保留搜索条件
【发布时间】:2010-01-20 14:08:05
【问题描述】:

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

【问题讨论】:

    标签: java jsp servlets


    【解决方案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>
    

    因此,当用户完成编辑项目时,将再次传递查询以显示在搜索框中。

    【讨论】:

    • 感谢 mr.gracia 的提示,但是 :-) 这导致另一个问题如何做到这一点?任何参考或链接
    • 将尝试并在此处报告。
    【解决方案2】:

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

    因此,以下基本示例应该可以工作。

    A页:

    <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 中执行 redirect 而不是 forward 时,这些会丢失,仅仅是因为 redirect 将创建一个全新的请求,从而垃圾初始请求,包括其所有参数和属性。

    【讨论】:

    • 感谢 balusc 和 gracia,我现在可以运行它了。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多