如何在下拉列表中显示所选值

时间:2014-04-22 08:03:30

标签: jquery ajax jsp

提交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 个答案:

答案 0 :(得分:0)

  

最初加载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);
}

使用jstl jsp:

在jsp渲染表单中

添加

<%@ 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中可用,以便使用<c:tag..