Ir ao conteúdo
  • Cadastre-se

Java Erro com foreach jsp


Posts recomendados

Olá. Eu estou com o seguinte erro "The class 'java.lang.String' does not have the property 'nome'". Então basicamente meu controller busca os dados de varios usuarios e retorna um array para a view

 

Controller

 

package br.ufsm.csi.controller;

import br.ufsm.csi.dao.UsuarioDAO;
import br.ufsm.csi.model.Usuario;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;

@WebServlet("pesquisa")
public class PesquisaController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

            String cidade = req.getParameter("cidade");
            req.setAttribute("usuarios",new UsuarioDAO().procura(cidade));
            System.out.println("Pesquisa feita com sucesso");
        RequestDispatcher rd = req.getRequestDispatcher("/pesquisa.jsp");
        rd.forward(req, resp);

    }
}

Pagina pesquisa jsp

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>

<html lang="pt-br">
<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <title>HomeCut</title>
</head>
<body>

<nav class="navbar navbar-expand-lg corOficial shadow ">
    <a class="navbar-brand logo" href="#">Homecut</a>
    <button class="navbar-toggler custom-toggler"  type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon" ></span>
    </button>
    <div class="collapse navbar-collapse justify-content-center ml-5 corOficial" id="navbarNavAltMarkup">
        <div class="navbar-nav corOficial">
            <a class="nav-item nav-link active" href="#">Início <span class="sr-only">(current)</span></a>

            <a class="nav-item nav-link " href="#" tabindex="-1" aria-disabled="false">Entrar</a>
        </div>
    </div>
</nav>

<div class="container contm">
    <h1 class="d-flex justify-content-center mt-5">Aqui Você Encontra os Profissionais Mais Perto de Você</h1>

</div>

<div class="container ">

    <form method="post" action="pesquisa">

        <div class="form-group umform input-group-lg w-100">

            <input type="text" placeholder="Digite o nome da sua cidade" name="cidade"  class="form-control" aria-describedby="inputGroup-sizing-default">
            <button type="submit" class="btn btn-primary botaoPesquisa shadow" name="gravar" value="gravar">Pesquisar</button>
        </div>

    </form>

</div>

<c:forEach var="u" items="usuarios" >
  <c:if test="${u !=null}">
<div class="container containerPesquisa ">
    <div class="row mt-5 m-0 border rounded pesquisaPerfil">

        <div class="col-lg  border">
            <h5 class="mt-3">Nome:${u.nome}</h5>
            <h5>Cidade:${u.cidade} </h5>
        </div>
        <div class="col-lg border">
            <h5 class="mt-4">Valor:${u.valor}</h5>

        </div>
        <div class="col-lg border">
            <div class="input-group mb-3 mt-2">
                <div class="input-group-prepend">
                    <label class="input-group-text">Dia</label>
                </div>
                <select class="custom-select" id="01">
                    <option selected>Escolha um dia da semana</option>
                    <option value="1">Segunda-Feira</option>
                    <option value="2">Terça-Feira</option>
                    <option value="3">Quarta-Feira</option>
                    <option value="4">Quinta-Feira</option>
                    <option value="5">Sexta-Feira</option>
                    <option value="6">sábado</option>
                    <option value="7">Domingo</option>
                </select>
            </div>

            <div class="input-group mb-3 mt-0">
                <input type="text" class="form-control" placeholder="Digite seu horário" aria-label="Recipient's usernao para atendimentome" aria-describedby="basic-addon2">
                <div class="input-group-append">
                    <button class="btn btn-outline-secondary botaoAgendar" type="button">Agendar</button>
                </div>
            </div>
        </div>

    </div>
</div>
  </c:if>
</c:forEach>

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</body>
</html>

usuarioDAO

 public ArrayList<Usuario> procura(String cidade){
        ArrayList<Usuario> usuarios = new ArrayList<Usuario>();
        Usuario usuario = new Usuario();
        int num = 2;
        try(Connection connection = new ConectaDB().getConexao()) {
            this.sql = "select * from usuario, usuario_permissao, servico WHERE cidade=? AND usuario.id_user=usuario_permissao.id_user and usuario_permissao.id_perm=? and servico.id_user=usuario.id_user";
            this.preparedStatement = connection.prepareStatement(this.sql, preparedStatement.RETURN_GENERATED_KEYS);

            this.preparedStatement.setString(1,cidade);
            this.preparedStatement.setInt(2,num);
             this.resultSet = this.preparedStatement.executeQuery();

            while(this.resultSet.next()){


                usuario.setId_user(this.resultSet.getInt("id_user"));
                usuario.setNome(this.resultSet.getString("nome"));
                usuario.setEmail(this.resultSet.getString("email"));
                usuario.setSenha(this.resultSet.getString("senha"));
                usuario.setCidade(this.resultSet.getString("cidade"));
                usuario.setEndereco(this.resultSet.getString("endereco"));
                usuario.setAtivo(this.resultSet.getBoolean("ativo"));
                usuario.setPermissao(this.resultSet.getInt("id_perm"));
                usuario.setValor(this.resultSet.getInt("valor"));
                usuarios.add(usuario);

            }

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return usuarios;
    }

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!