當我點擊一個提交按鈕並在同一頁面重定向時,如何能夠獲得與ddl相同的選定項目?如何在頁面刷新時爲同一頁面維護Droplist selected項目?
回答
我希望你必須爲請求參數發送DDL1的all
和M
DDL2的服務器當你點擊搜索。
如果搜索帶你到你的servlet來獲取搜索結果或做任何種類的業務邏輯不是重定向或轉發到JSP其中包含的DDL可以作爲請求屬性添加all
& M
請求參數之前,則在JSP中,只需根據<option>
值檢查這些請求屬性。
我假定以下可能是你的代碼的樣子:
JSP一小段代碼片段
<select name="ddl1">
<option value="0">all</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<select name="ddl2">
<option value="0">All</option>
<option value="L">L</option>
<option value="M">M</option>
<option value="N">N</option>
<option value="O">O</option>
</select>
servlet代碼片段
String ddl1Param = request.getParameter("ddl1");
String ddl2Param = request.getParameter("ddl2");
// your business logic
// ...
request.setAttribute("ddl1Attr", ddl1Param);
request.setAttribute("ddl2Attr", ddl2Param);
// your forward or redirect logic goes here
// ...
現在改變JSP代碼會是這個樣子:
我們剛剛包含在每個選項塊的<c:if>
條件檢查,如果返回的屬性等於該選項的值,如果是,則selected
attribute將被放置在選項。我正在使用JSP Expression Language (EL)。
<select name="ddl1">
<option value="0" <c:if test="${'0' eq ddl1Attr}">selected</c:if>>all</option>
<option value="A" <c:if test="${'A' eq ddl1Attr}">selected</c:if>>A</option>
<option value="B" <c:if test="${'B' eq ddl1Attr}">selected</c:if>>B</option>
<option value="C" <c:if test="${'C' eq ddl1Attr}">selected</c:if>>C</option>
<option value="D" <c:if test="${'D' eq ddl1Attr}">selected</c:if>>D</option>
</select>
<select name="ddl2">
<option value="0" <c:if test="${'0' eq ddl2Attr}">selected</c:if>>all</option>
<option value="L" <c:if test="${'L' eq ddl2Attr}">selected</c:if>>L</option>
<option value="M" <c:if test="${'M' eq ddl2Attr}">selected</c:if>>M</option>
<option value="N" <c:if test="${'N' eq ddl2Attr}">selected</c:if>>N</option>
<option value="O" <c:if test="${'O' eq ddl2Attr}">selected</c:if>>O</option>
</select>
另一種方法
如果你只是轉發上搜索到的同一個JSP的點擊請求(即中之間不存在的servlet),那麼JSP代碼可以修改:
您可以使用param.ddl1
或param["ddl1"]
,它是一樣的東西。該EL獲取請求參數ddl1
和ddl2
。
<select name="ddl1">
<option value="0" <c:if test="${'0' eq param.ddl1}">selected</c:if>>all</option>
<option value="A" <c:if test="${'A' eq param.ddl1}">selected</c:if>>A</option>
<option value="B" <c:if test="${'B' eq param.ddl1}">selected</c:if>>B</option>
<option value="C" <c:if test="${'C' eq param.ddl1}">selected</c:if>>C</option>
<option value="D" <c:if test="${'D' eq param.ddl1}">selected</c:if>>D</option>
</select>
<select name="ddl2">
<option value="0" <c:if test="${'0' eq param['ddl2']}">selected</c:if>>all</option>
<option value="L" <c:if test="${'L' eq param['ddl2']}">selected</c:if>>L</option>
<option value="M" <c:if test="${'M' eq param['ddl2']}">selected</c:if>>M</option>
<option value="N" <c:if test="${'N' eq param['ddl2']}">selected</c:if>>N</option>
<option value="O" <c:if test="${'O' eq param['ddl2']}">selected</c:if>>O</option>
</select>
另一種方法是將值存儲在session
。但我認爲堅持request
會更好。
中的第一個列表,謝謝它的使用! :) – PeterS 2013-03-08 09:58:34
由於您被重定向到頁面,您無法存儲從表單提交的數據。 我能想到的選項是將它存儲在會話中並傳遞給它。
這太問題可以幫助你how to set data in Session
- 1. AJAX如何在同一時間爲目標頁面更新當前頁面沒有刷新
- 2. 如何在刷新頁面時停止重新提交頁面?
- 3. 刷新相同頁面
- 4. 如何維護同一頁面的不同會話?
- 5. 如何不刷新頁面
- 6. 如何在同一頁面重新創建數據表而不刷新頁面
- 7. 如何在刷新頁面時重定向頁面?
- 8. 如何在用戶離開頁面時定期刷新頁面?不刷新如果頁面
- 9. 如何在同一頁面維護會話
- 10. nginx的維護頁面
- 11. 如何在asp.net的同一頁面上打開新頁面
- 12. 頁面刷新
- 13. 刷新頁面
- 14. 刷新頁面
- 15. Django - 如何在不刷新頁面的情況下保持同一頁面?
- 16. div下來,同時刷新頁面
- 17. Response.Redirect同一頁面沒有頁面刷新
- 18. 如何在頁面上更改頁面後刷新組件
- 19. 如何在WILDFLY 10中更新服務器目錄時設置維護頁面?
- 20. 在MVC中更新頂級參數時維護當前頁面
- 21. iMacros + Javascript - 如何刷新頁面超時?
- 22. 如何刷新頁面時,不顯示
- 23. 如何通過JS值時停止刷新頁面使用windows.location.href在同一頁
- 24. 如何在頁面刷新時處理同一頁中兩個模態的值
- 25. 如何避免html5畫布在頁面刷新時刷新
- 26. PHP的Javascript維護頁面
- 27. ColdFusion IIS維護頁面
- 28. 如何顯示維護頁面?
- 29. 如何自動刷新頁面一次?
- 30. 刷新一個WPF頁面
能否請您給爲你正在嘗試做多一點的信息?一些代碼或屏幕截圖可能也有幫助。謝謝 – 2013-03-08 07:42:17
@PrakashK例如我有用於過濾顯示數據的下拉列表...現在當我在ddl1中選擇「all」並在ddl2中選擇'M'時,當我單擊搜索時頁面將刷新。現在,當頁面已經刷新的時候,我想顯示'all'和'M'作爲ddl中選擇的默認值,而不是ddl – PeterS 2013-03-08 07:50:01