How to set default value for drop-down/select in JSP?

50,252

Solution 1

<% for(int count=0; count<eqArray.size(); count++){ %>
    <option value="<%= eqArray.get(count) %>" <%= (eqArray.get(count).equals("eqName"))?"selected":"" %> ><%= eqArray.get(count) %></option>  
<%} %>

Solution 2

Change the index of eqName element to 0 in the array, or use a conditional Statement.

<% 
for(int count=0; count < eqArray.size(); count++){ %>
        <%if(eqArray.equals("eqName"){ %>           
            <option  selected="selected" value="<%=eqArray.get(count)%>"><%=eqArray.get(count)%></option>  
        <%} %> 
        <option value="<%=eqArray.get(count)%>"><%=eqArray.get(count)%></option>  
 <%} %>

but use JSTL taglibs instead of using scriptlets.

Solution 3

You can do it via JQuery, which IMHO more clean:

<select data-selected="${eqName}">
<% 
    for(int count=0;count<eqArray.size();count++){ %>
            <option value="<%=eqArray.get(count)%>"><%=eqArray.get(count)%></option>  
     <%} 
%>
</select>

At the end of the page:

<script type="text/javascript">
  $("select[data-selected]").each(function() {
      var selected = $(this).data("selected");
      $("select[data-selected='" + selected + "'] option[value='" + selected + "']").attr("selected", "selected");
  })
</script>

By this way, you just need include the js at each of your page.

BTW, I recommend you to use JSTL and EL, which is more readable:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<select data-selected="${eqName}">
  <c:forEach items="${eqArray}" var="model">
    <option value="${model}">${model}</option>
  </c:forEach>
</select>
Share:
50,252
Chillax
Author by

Chillax

Updated on July 09, 2022

Comments

  • Chillax
    Chillax almost 2 years

    I have an arraylist for Strings eqArray.

    I need to show it in a drop-down list for which I'm using the following in my JSP:

    <% 
    
        for(int count=0;count<eqArray.size();count++){ %>
                <option value="<%=eqArray.get(count)%>"><%=eqArray.get(count)%></option>  
         <%} 
    %>
    

    I have an eqName String which is part of eqArray and should be the selected value by default.

    How do I go about it without having to check and set the first option as eqName always?