當我點擊一個提交按鈕並在同一頁面重定向時,如何能夠獲得與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. 刷新後維護頁面狀態
- 2. 頁面刷新時如何維護表單請求值
- 3. 阻止網頁從維護頁面滾動位置在刷新
- 4. AJAX如何在同一時間爲目標頁面更新當前頁面沒有刷新
- 5. 如何在刷新頁面時停止重新提交頁面?
- 6. 重新加載頁面時維護頁面設置
- 7. 刷新相同頁面
- 8. 如何在子頁面關閉時刷新父頁面?
- 9. 如何維護同一頁面的不同會話?
- 10. 如何不刷新頁面
- 11. 如何在同一頁面重新創建數據表而不刷新頁面
- 12. 如何在刷新頁面時重定向頁面?
- 13. 如何在使用DDL時刷新頁面而無需刷新頁面
- 14. 如何在同一頁面維護會話
- 15. nginx的維護頁面
- 16. 如何在用戶離開頁面時定期刷新頁面?不刷新如果頁面
- 17. 在頁面刷新後維護隱藏的div選擇
- 18. 鉻 - 一次刷新HTML頁面,子頁面,子子頁面等
- 19. 如何在asp.net的同一頁面上打開新頁面
- 20. PHP實施維護維護頁面
- 21. 在運行另一個頁面時刷新HTML PHP頁面?
- 22. 刷新頁面
- 23. 頁面刷新
- 24. Django - 如何在不刷新頁面的情況下保持同一頁面?
- 25. 將JQuery移動到頁面頂部,同時刷新頁面
- 26. div下來,同時刷新頁面
- 27. 在頁面刷新時使用jQuery .get()循環的元素在頁面刷新時按不同順序加載
- 28. Response.Redirect同一頁面沒有頁面刷新
- 29. 維護模式在公共頁面不在管理頁面[Laravel]
- 30. 如何保持頁面刷新aspx頁面時禁用控件?
能否請您給爲你正在嘗試做多一點的信息?一些代碼或屏幕截圖可能也有幫助。謝謝 – 2013-03-08 07:42:17
@PrakashK例如我有用於過濾顯示數據的下拉列表...現在當我在ddl1中選擇「all」並在ddl2中選擇'M'時,當我單擊搜索時頁面將刷新。現在,當頁面已經刷新的時候,我想顯示'all'和'M'作爲ddl中選擇的默認值,而不是ddl – PeterS 2013-03-08 07:50:01