Selected value for JSP drop down using JSTL

Jåcob picture Jåcob · Mar 27, 2013 · Viewed 157k times · Source

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.

Answer

BalusC picture BalusC · Mar 27, 2013

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: