2013-03-08 58 views
1

當我點擊一個提交按鈕並在同一頁面重定向時,如何能夠獲得與ddl相同的選定項目?如何在頁面刷新時爲同一頁面維護Droplist selected項目?

+0

能否請您給爲你正在嘗試做多一點的信息?一些代碼或屏幕截圖可能也有幫助。謝謝 – 2013-03-08 07:42:17

+0

@PrakashK例如我有用於過濾顯示數據的下拉列表...現在當我在ddl1中選擇「all」並在ddl2中選擇'M'時,當我單擊搜索時頁面將刷新。現在,當頁面已經刷新的時候,我想顯示'all'和'M'作爲ddl中選擇的默認值,而不是ddl – PeterS 2013-03-08 07:50:01

回答

0

我希望你必須爲請求參數發送DDL1的allM 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.ddl1param["ddl1"],它是一樣的東西。該EL獲取請求參數ddl1ddl2

<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會更好。

+0

中的第一個列表,謝謝它的使用! :) – PeterS 2013-03-08 09:58:34

0

由於您被重定向到頁面,您無法存儲從表單提交的數據。 我能想到的選項是將它存儲在會話中並傳遞給它。

這太問題可以幫助你how to set data in Session