jspdrop-down-menujstlretain

Selected value for JSP drop down using JSTL


I have SortedMap in Servlet to populate drop down values in JSP and I have the following code

    SortedMap<String, String> dept = findDepartment();
    request.setAttribute("dept ", dept);

and in JSP

       <select name="department">
          <c:forEach var="item" items="${dept}">
            <option value="${item.key}">${item.value}</option>
          </c:forEach>
        </select>

I am using one JSP page for insert and update. When I am editing the page how can I set selected value to drop down where selected value will come from database.


Solution

  • In HTML, the selected option is represented by the presence of the selected attribute on the <option> element like so:

    <option ... selected>...</option>
    

    Or if you're HTML/XHTML strict:

    <option ... selected="selected">...</option>
    

    Thus, you just have to let JSP/EL print it conditionally. Provided that you've prepared the selected department as follows:

    request.setAttribute("selectedDept", selectedDept);
    

    then this should do:

    <select name="department">
        <c:forEach var="item" items="${dept}">
            <option value="${item.key}" ${item.key == selectedDept ? 'selected="selected"' : ''}>${item.value}</option>
        </c:forEach>
    </select>
    

    See also: