Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como eu realizaria a alteração de apenas alguns dados?

Olá galera da Alura!

Na aula o professor explicou como buscar e trazer os dados e alterar os mesmos. Mas fiquei com uma dúvida, numa situação hipotetica, onde você tem além do nome e data, por exemplo o CNPJ ou qualquer outro dado, e você quer listar nome, data e CNPJ, mas impossibilitar a edição do CNPJ, deixando ele apenas para visualização, como funcionaria fazer isso?

2 respostas
solução!

Oie Bruno, tudo bem contigo?

Segue o código com o acrescimo do CNPJ:

NovaEmpresaServlet:

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        System.out.println("Cadastrando nova empresa");

        String nomeEmpresa = request.getParameter("nome");
        String paramDataEmpresa = request.getParameter("data");
        String paramCnpj = request.getParameter("cnpj"); // recebe o valor do cnpj e salva em uma variável

        Date dataAbertura = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            dataAbertura = sdf.parse(paramDataEmpresa);
        } catch (ParseException e) {
            throw new ServletException(e);
        }

        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);
        empresa.setDataAbertura(dataAbertura);
        empresa.setCnpj(paramCnpj); // guarda o valor do cnpj dentro do atributo de um objeto empresa

        Banco banco = new Banco();
        banco.adiciona(empresa);

        request.setAttribute("empresa", empresa.getNome());

        response.sendRedirect("listaEmpresas");

    }

}

formNovaEmpresa.jsp:


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:url value="/novaEmpresa" var="linkServletNovaEmpresa"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

    <form action="${linkServletNovaEmpresa }" method="post">

        Nome: <input type="text" name="nome"  />
        CNPJ: <input type="text" name="cnpj">
        Data Abertura: <input type="text" name="data"  />
        <input type="submit" />
    </form>

</body>
</html>

listaEmpresas.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.List, br.com.alura.gerenciador.servlet.Empresa"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Java Standard Taglib</title>
</head>
<body>

    <c:if test="${not empty empresa}">
        Empresa ${ empresa } cadastrada com sucesso!
    </c:if>

    Lista de empresas: <br />

    <ul>
        <c:forEach items="${empresas}" var="empresa">

            <li>
                ${empresa.nome } - ${empresa.cnpj } - <fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/> 
                <a href="/gerenciador/mostraEmpresa?id=${empresa.id }">edita</a>
                <a href="/gerenciador/removeEmpresa?id=${empresa.id }">remove</a>
            </li>
        </c:forEach>
    </ul>

</body>
</html>

formAlteraEmpresa.jsp:


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>


<c:url value="/alteraEmpresa" var="linkServletNovaEmpresa"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

    <form action="${linkServletNovaEmpresa }" method="post">

        Nome: <input type="text" name="nome" value="${empresa.nome }" />
        Cnpj: <input type="text" name="cpng" value="${empresa.cnpj }" readonly>
        Data Abertura: <input type="text" name="data"  value="<fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/>" />
        <input type="hidden" name="id" value="${empresa.id }">
        <input type="submit" />
    </form>

</body>
</html>

O "readonly" colocado dentro da tag "input" do cnpj serve para o usuário só conseguir visualizar o valor e não alterar.

Fico a disposição para tirar qualquer outra dúvida :)

Bons estudos!

Bom dia Igor, muito obrigado pelo rápido retorno, espero que esteja bem também. Entendi, o segredo está no readonly. Vlw por compartilhar!