Ola pessoal,
Eu criei uma pagina para exibir registros provindas do banco de dados. Na pagina tem uma comboBox do tipo tag Struts e ao clicar em um registro, dispara um evento para a Action e assim fazer as consultas e retorna-las em uma Collection.
Abaixo vou colocar o codigo da DAO, Action e depois um trecho da JSP.
1 - Metodo que consulta os usuarios do sistema
/**
* Consulta os dados dos usuarios vinculados
* ao grupo cadastrado manualmente como também
* vincular o grupo ao departamento.
* @return Collection - Retorna coleções de usuarios
* do sistema
* @throws DAOException
*/
public Collection<VisualizacaoCotasDTO> getUsuariosPoliticas() throws DAOException{
Collection<VisualizacaoCotasDTO> usuarios = null;
try {
// Abrindo conexao
conn = dao.getConnection();
/*
* A variavel sql ira receber a instrucao SQL para consultar
* os usuarios cadastrados no sistema manualmente
*/
sql.delete(0, sql.length());
sql.append("SELECT usuario.id_pol_us,usuario.nome_usuario,usuario.qtd_paginas,");
sql.append("usuario.cota_adicional,grupo.nome,dep.nome");
sql.append(" FROM politica_usuarios usuario ");
sql.append("INNER JOIN pol_usu_grp pug ON pug.id_pol_us = usuario.id_pol_us ");
sql.append("INNER JOIN grupo ON grupo.id_grupo = pug.id_grupo ");
sql.append("INNER JOIN pol_grp_dep pgd ON pgd.id_grupo = pug.id_grupo ");
sql.append("INNER JOIN departamento dep ON dep.id_departamento = pgd.id_departamento;");
//Preparando a consulta
pst = conn.prepareStatement(sql.toString());
//Inicializando o objeto do tipo ArrayList
usuarios = new ArrayList<VisualizacaoCotasDTO>();
//Executando a consulta
rs = pst.executeQuery();
/*
* Enquanto encontrar registros na consulta
* atribuir os valores ao objeto usuario e assim
* adicionar a coleção usuarios e com isso torna
* um loop.
*
* Aqui e usado a ordem das colunas ao inves
* do nome dos campos pelo motivo de o campo
* do grupo ser igual ao departamento.
*/
while(rs.next()){
VisualizacaoCotasDTO usuario = new VisualizacaoCotasDTO();
usuario.setId_usuario(rs.getInt(1));
usuario.setUsuario(rs.getString(2));
usuario.setCota(rs.getInt(3));
usuario.setAcrescimo(rs.getInt(4));
usuario.setGrupos(rs.getString(5));
usuario.setDepartamento(rs.getString(6));
usuarios.add(usuario);
}
//Liberando memoria
rs.close();
pst.close();
conn.commit();
} catch (NullPointerException exception_null) {
throw new DAOException("Ocorreu um erro.");
} catch (Exception e) {
throw new DAOException(e.getMessage());
} finally {
// Liberando a conexao de volta ao pool
try {
conn.close();
} catch (SQLException ex) {
throw new DAOException(ex.getMessage());
} // fim do catch
} // fim do finally
return usuarios;
}// fim do metodo getUsuariosPoliticas
2 - Metodo que retorna usuarios cadastrados automaticamente
/**
* Consulta os dados dos usuarios cadastrados pelo AD
* vinculados ao grupo cadastrado pelo AD.
* @return Collection - Retorna coleções de usuarios
* do AD
* @throws DAOException
*/
public Collection<VisualizacaoCotasDTO> getUsuariosAD() throws DAOException{
Collection<VisualizacaoCotasDTO> usuarios_ad = null;
try {
//Abrindo Conexao
conn = dao.getConnection();
/*
* A variavel sql ira receber a instrucao SQL para consultar
* os usuarios cadastrados no sistema manualmente
*/
sql.delete(0, sql.length());
sql.append("SELECT ad_usuarios.nome_usuario,ad_usuarios.qtd_paginas,ad_usuarios.cota_adicional,ad_grupos.nome_grupo");
sql.append(" FROM ad_grp_usu ");
sql.append("INNER JOIN ad_usuarios ON ad_usuarios.id_ad_usu = ad_grp_usu.id_ad_usu ");
sql.append("INNER JOIN ad_grupos ON ad_grupos.id_ad_grup = ad_grp_usu.id_ad_grup;");
//Preparando a consulta
pst = conn.prepareStatement(sql.toString());
//Inicializando objeto para ArrayList
usuarios_ad = new ArrayList<VisualizacaoCotasDTO>();
//Executando a consulta
rs = pst.executeQuery();
/*
* Enquanto encontrar registros na consulta
* atribuir os valores ao objeto usuario e assim
* adicionar a coleção usuarios e com isso torna
* um loop.
*/
while(rs.next()){
VisualizacaoCotasDTO usuario = new VisualizacaoCotasDTO();
usuario.setGrupos_ad(rs.getString("nome_grupo"));
usuario.setCota_ad(rs.getInt("qtd_paginas"));
usuario.setUsuario_ad(rs.getString("nome_usuario"));
usuario.setAcrescimo_ad(rs.getInt("cota_adicional"));
usuarios_ad.add(usuario);
}
//Liberando espaço
rs.close();
pst.close();
conn.commit();
} catch (NullPointerException exception_null) {
throw new DAOException("Ocorreu um erro.");
} catch (Exception e) {
throw new DAOException(e.getMessage());
} finally {
// Liberando a conexao de volta ao pool
try {
conn.close();
} catch (SQLException ex) {
throw new DAOException(ex.getMessage());
} // fim do catch
} // fim do finally
return usuarios_ad;
}// fim do metodo getUsuariosPoliticasAD
A Action que gerencia a camada de negócios:
/**
* Invoca o metodo DAO para consultar todos os usuarios
* do sistema. Com isso o metodo retornara os registros
* para uma collection do tipo @see VisualizacaoCotasDTO
* e assim atribuira as suas coleções para um objeto do tipo
* PrintWriter que será retornado do método, lembrando que
* a variavel forward esta como null, com isso o objeto ira
* ser retornado.
*
* @param mapping - Verifica o mapeamento da pagina no struts-config.xml
* @param form - Nao e usado nesse metodo
* @param request - Requisição para a Action
* @param response - Resposta da Action
* @throws IOException - Excecao da Classe @see DAOException
*/
public ActionForward retornaUsuarios(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException{
ActionForward forward = null;
Collection<VisualizacaoCotasDTO> usuarios = null;
VisualizacaoCotasDAO visualizacaoDAO = new VisualizacaoCotasDAO();
try {
/*
* Invocando o metodo com o objeto visualizacaoDAO
* para consultar no banco e retornar os registros
* para a coleção usuarios e usuarios_ad
*/
usuarios = visualizacaoDAO.getUsuariosPoliticas();
/*
* Setando atributos da action para enviar os dados
* dos usuarios cadastrados no sistema, e no AD
* e enviar o valor para sentinela exibir a tabela
* de usuarios.
*/
request.setAttribute("usuarios", usuarios);
request.setAttribute("sentinela", "usuarios");
/*Executa o metodo para consultar os usuarios do AD*/
forward = retornaUsuariosAD(mapping, form, request, response);
} catch (Exception e) {
e.printStackTrace();
}// fim do catch
return forward;
}// fim do metodo retornaUsuarios
/**
* Invoca o metodo DAO para consultar todos os usuarios
* do sistema. Com isso o metodo retornara os registros
* para uma collection do tipo @see VisualizacaoCotasDTO
* e assim atribuira as suas coleções para um objeto do tipo
* PrintWriter que será retornado do método, lembrando que
* a variavel forward esta como null, com isso o objeto ira
* ser retornado.
*
* @param mapping - Verifica o mapeamento da pagina no struts-config.xml
* @param form - Nao e usado nesse metodo
* @param request - Requisição para a Action
* @param response - Resposta da Action
* @throws DAOException
*/
public ActionForward retornaUsuariosAD(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws DAOException{
ActionForward forward = null;
try {
Collection<VisualizacaoCotasDTO> usuarios_ad = null;
VisualizacaoCotasDAO visualizacaoDAO = new VisualizacaoCotasDAO();
/*
* Consultando os registros com o metodo getUsuariosAD
*/
usuarios_ad = visualizacaoDAO.getUsuariosAD();
request.setAttribute("usuarios-ad", usuarios_ad);
/*Redirecionando na pagina mapeada na action*/
forward = mapping.findForward("visualizacao");
} catch (Exception exception) {
throw new DAOException("Ocorreu um erro.");
}
return forward;
}// fim do metodo retornaUsuariosAD
E a JSP:
<!-- ComboBox que ao clicar dispara o evento -->
<html:select property="primeira_pesquisa" styleId="primeira_pesquisa" onchange="javascript:capturaValorCombo('primeira_pesquisa')">
<html:option value=""><bean:message key="visualizacaoCotas.mensagemPesquisar"/></html:option>
<html:option value="departamentos"><bean:message key="visualizacaoCotas.pesquisaDepartamento"/></html:option>
<html:option value="grupos"><bean:message key="visualizacaoCotas.pesquisaGrupos"/></html:option>
<html:option value="usuarios"><bean:message key="visualizacaoCotas.pesquisaUsuarios"/></html:option>
</html:select>
<div id="divConteudoListagens">
<center>
<c:choose>
<c:when test="${sentinela == 'usuarios'}">
<table border='0' width="100%" class="comBordaSimples">
<tr>
<th> </th>
<th><bean:message key="visualizacaoCotas.departamento"/></th>
<th><bean:message key="visualizacaoCotas.grupo"/></th>
<th><bean:message key="visualizacaoCotas.cota"/></th>
<th><bean:message key="visualizacaoCotas.usuario"/></th>
<th><bean:message key="visualizacaoCotas.acrescimo"/></th>
<th><bean:message key="visualizacaoCotas.acumuloMesPassado"/></th>
<th><bean:message key="visualizacaoCotas.utilizado"/></th>
</tr>
<c:forEach var="usuario" items="${usuarios}">
<tr align="center">
<td><input type="radio" name="seleciona_opcao_pesquisa" value=""/></td>
<td><c:out value="${usuario.departamento}"/></td>
<td><c:out value="${usuario.grupos}"/></td>
<td><c:out value="${usuario.cota}"/></td>
<td><c:out value="${usuario.usuario}"/></td>
<td><c:out value="${usuario.acrescimo}"/></td>
<td><c:out value="-----"/></td>
<td><c:out value="-----"/></td>
</tr>
</c:forEach>
<c:forEach var="usuario" items="${usuarios-ad}">
<tr align="center">
<td><input type="radio" name="seleciona_opcao_pesquisa" value=""/></td>
<td><c:out value="${usuario.departamento}"/></td>
<td><c:out value="${usuario.grupos_ad}"/></td>
<td><c:out value="${usuario.cota_ad}"/></td>
<td><c:out value="${usuario.usuario}"/></td>
<td><c:out value="${usuario.acrescimo_ad}"/></td>
<td><c:out value="-----"/></td>
<td><c:out value="-----"/></td>
</tr>
</c:forEach>
</table>
</c:when>
</c:choose>
Ao executar o sistema quando clico para buscar os usuarios, ele só mostra dois registros dentro da div e desconfigura a paginas eliminando assim as imagens do rodape. e com o departamento, funciona normalmente. Sera porque o departamento usa só um forEach e o usuario dois?
Alguem pode ajudar?
VLW!!!