当我点击一个提交按钮并在同一页面重定向时,如何能够获得与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