Construção dinâmica de menus de seleção utilizando JSP

Este artigo propõe uma forma ordenada de gerar estes menus utilizando para isso JSP.

Por Fernando Arturi


Publicado em: 04/10/06

Valorize este artigo:
Acontece quando temos que gerar menus de seleção dentro de páginas HTML. Muitas vezes estes menus são idênticos ou muito parecidos, e pode ocorrer de ocuparem muito lugar dentro de nossa página web.

A idéia é passar a esta função os parâmetros que nos interessam, e deixar que ela se ocupe do resto. Vejamos o código da página, com uma breve explicação abaixo de cada bloco de código.

<%@ page language="java"%>
<%!
   private void writeMenu(javax.servlet.jsp.JspWriter out, int startValue,
  int endValue, int selectedValue){
  try{
  // esta linha eh opcional...
   out.println("<option value=\"-1\" selected>
  Selecione uma opcao</option>");

  // comeco o ciclo com a classe de valores dado.
  for (int i=startValue; i<(endValue+1); i++){
  // se o valor atual corresponde ao valor do ciclo,
  //faco aparecer como selecionado
   if (i == selectedValue){
    out.println("<option value=\""+i+"\"
    selected>"+i+"</option>");
   }
   else{
    out.println("<option value=\""+i+"\">"+i+"</option>");
   }
   }
  }catch(java.io.IOException e1){
   System.out.println(e1);
   }
}
%>

Esta é a função que gera o menu, recebe como parâmetros o valor inicial, o valor final, o valor atual e o objeto JspWriter, que permite escrever dinamicamente sobre a página.

<%

java.util.GregorianCalendar cal = new java.util.GregorianCalendar();
    int day = cal.get(cal.DAY_OF_MONTH);
    int month = (cal.get(cal.MONTH)) + 1;
    int year = cal.get(cal.YEAR);

%>


Criamos variáveis de página, que nos servirão somente para provar a função.

<html>
<head>
<title>Construção dinâmica de menus de seleção</title>
</head>

<body>

<table>
   <h1>construcao dinamica de menus de selecao</h1>
    <tr>
     <td>Dia:
     <select>
      <% writeMenu(out,1,31,day); %>
     </select>
     </td>

     <td>Mes:
     <select>
      <% writeMenu(out,1,12,month); %>
     </select>

     </td>

     <td>Ano:
     <select>
      <% writeMenu(out,2000,2010,year); %>
     </select>

     </td>

     </tr>
   </table>
  </body>
</html>


Finalmente o html, muito simples, que mostra como se usa a funcao.
Uma variante deste procedimento seria, por exemplo, ler dados de uma database. Por exemplo, se quisermos gerar um clássico menu com a lista de países do mundo, poderemos fazer uma função deste tipo:

public void writeCountryMenu(Connection connection,
javax.servlet.jsp.JspWriter out, int currentValue){
   try{
     String sqlString = " SELECT id,Name from T_Countries order by orderview ";

     Statement stmt = connection.createStatement();
     ResultSet rs = stmt.executeQuery(sqlString);
     while (rs.next()){
       String selected = "";
      int countryId = rs.getInt("id");
      if (countryId==currentValue)
       selected = "SELECTED";
      out.print("<option value=\""+countryId+"\" "+selected+">"+rs.getString("Name")+"</option>");
     }
     rs.close();
   stmt.close();

   }catch(Exception e){
     System.out.println(e);
   }
  }


Neste caso obviamente temos que passar uma conexão a um database (pode ser MsSQL, MySql, etc.) no qual temos a tabela T_countries, com os campos id, name e orderview.





Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro
Manuais relacionados
Categorias relacionadas
O autor

Buscar projetos:

Home | Sobre nós | Copyright | Anuncie | Entrar em contato