2013-03-08 57 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