【问题标题】:How to show selected value in dropdown list如何在下拉列表中显示选定的值
【发布时间】:2014-06-06 11:46:05
【问题描述】:

提交 JSP 页面请求后转到 servlet。在 servlet 中,我需要将对象发送到同一个 JSP 页面以填充表单文本字段和下拉列表。

用户将在表单中输入 id 值,我们需要从数据库中获取数据并需要填写同一页面中的其余字段

最初加载 JSP 页面时,应从数据库中获取下拉列表值

问题:

提交后如何在下拉列表框中显示从数据库中获取的值。

因为它与早期的场景冲突(加载时从数据库中动态获取值)!!

  /*

      <sql:setDataSource driver="sun.jdbc.odbc.JdbcOdbcDriver"
                   url="jdbc:odbc:lab"
                   var="localSource" 
                   />

<sql:query dataSource="${localSource}" 
           sql="select cate_id,cate_desc from category"
           var="result" />
  <select name="cate_id">
  <c:forEach items="${result.rows}" var="r">
        <c:choose>
        <c:when test="${r.cate_id eq a }"> // I got a value from request.getattribute
        <option value="${r.cate_id}" selected="selected">${r.cate_desc}</option>
        </c:when>
    <c:otherwise>
    <option value="${r.cate_id}">${r.cate_desc}</option>
   </c:otherwise>
   </c:choose>
   </c:forEach>
   </select>

*/

问题

它应该在复选框中显示来自数据库的值,但在提交表单之后

页面未在复选框中显示用户选择的值。(显示所有值)

请帮帮我

【问题讨论】:

  • 是您的要求还是您的代码有问题?如果有要求,请向您的产品负责人澄清一下,如果有代码,请发布一些片段并解释什么不起作用
  • 这不是高水平的项目要求 :) 我的大学作业。如果您了解我的问题,请提出一些解决方案。指导我在下拉列表框中显示从数据库中获取的值。
  • 解决您的问题的方法是:执行 1 次查询以获取值,然后在您的 jsp 中迭代 ResultSet 并相应地生成 html。我不知道您使用哪些技术进行数据库访问(JDBC、Hibernate 等),也不知道您使用的表,所以我不能比这更有帮助了。请写下一些代码,如果它不起作用,请发布它,有人会帮助您解决问题。

标签: jquery ajax jsp


【解决方案1】:

最初加载 JSP 页面时,应从数据库中获取下拉列表值

首先创建一个 POJO 类来将所有表单信息保存在一个地方,例如:

public class UserFormDTO {
   private Integer id;
   private String name;
   private String selectedOption;
   private List<String> options;

   public UserFormDTO(){}

   //getters and setters
}

在 servlet 中提交表单doPost():

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {  

    //build UserFormDTO instance form user filled fields
    //store UserFormDTO in database here.. 
}

从 servlet 的 doGet() 中的数据库中检索 UserFormDTO 实例,并将其添加到请求中以在 jsp 中使用,例如:

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
                                           throws ServletException, IOException {

    //Retrieve UserFormDTO instance from database

    //add it to request
    request.setAttribute("userFormDTO", userFormDTO);

    //forward to jsp
    RequestDispatcher dispatcher = request.getRequestDispatcher("userForm.jsp");
    dispatcher.forward(request, response);
}

在jsp渲染表单中使用jstljsp:

添加

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

然后在 jsp 的顶部, 在下拉列表中显示选定的值 呈现形式如:

<form action="someAction" method="post">
    id:
    <input type="text" name="id"/>
    Name:
    <input type="text" name="name"/>
    Options:
    <select name="selectedOption">
    <c:forEach items="${userFormDTO.options}" var="opt">
       <c:choose>
        <c:when test="${opt eq userFormDTO.selectedOption}">
            <option value="${opt}" selected="selected">${opt}</option>
        </c:when>
        <c:otherwise>
            <option value="${opt}">${opt}</option>
        </c:otherwise>
       </c:choose>
    </c:forEach>
    </select>
    <input type="submit"/>
</form>


注意: jstl.jar 应该在 CLASSPATH 中可用,以便使用 &lt;c:tag..

【讨论】:

  • 感谢您的意见。我正在努力,会通知你
  • @NareshSathu 好的,当您遇到任何问题时请告诉我,如果对您有帮助,请不要忘记打勾!
  • 我的代码中的小错误。请帮我找出问题所在
  • @NareshSathu 它是什么?你可以提出一个新问题。
  • @NareshSathu 您所说的页面未在复选框中显示用户选择的值是什么意思不太清楚,我没听懂。
猜你喜欢
  • 1970-01-01
  • 2015-09-14
  • 2020-07-10
  • 2021-09-27
  • 2020-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多