2010-01-20 136 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