[RESOLVIDO] Pagina JSP retorna com campos vazios após validação de informações

Consegui resolver examinando este tópico :

o problema era bem parecido, eu incrementei a solução com o comando "setProperty " na JSP.

agradeço a todos que me ajudaram.

Pessoal, !
Eu tenho pouco tempo de experiencia com java, estou com problema onde tenho uma JSP (cadastrar) que valida informações de campos, o problema ocorre quando gera uma alguma mensagem em qualquer campo (por alguma falha minha) quando retorno para o FORM da JSP todos os campos ficam vazios.
Segue os codigos JSP, Servlet e Javabeans envolvidos no problema.
eu não uso framework.
Por favor alguem pode me ajudar?

pessoal pesso perdão por não anexar os arquivos dos codigos porque esta ocorrendo um erro quando tento atachar os arquivos neste tópico.

segue os códigos JSP, Servlet e Javabeans

JSP:

<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ page import = "java.util.Date,java.text.SimpleDateFormat,java.text.ParseException"%>
 
<c:import url="cabecalho_noticias.jsp"/>

<jsp:useBean id="noticia" class="br.com.noticiasWeb.modelo.javaBeans.Noticia"  scope="request">
</jsp:useBean>

<%-- <c:if test="${param.enviado}" > 
<%
    String dateStr = request.getParameter("data_noticia_DMA");
    SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
    Date dt_result = formater.parse(dateStr);
    out.println(dt_result);
    String  wdt_AMD = dt_result.toString() ;
    //noticia.setData_noticia_DMA(dt_result);
    //request.getParameter("data_noticia_DMA");
    out.println(wdt_AMD);
    noticia.setData_noticia_DMA(dt_result);
    request.setAttribute("noticia.data_noticia_DMA",noticia.getData_noticia_DMA());
%>
   </c:if>   --%>
  
 <%--  <jsp:setProperty name="noticia" property="*" />   --%>

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

    <c:if test="${param.enviado}" >

        <c:if test="${empty noticia.data_noticia_DMA}" var="semData_noticia"></c:if>

        <c:if test="${empty noticia.id_usuario}" var="semId_usuario"></c:if>

        <c:if test="${empty noticia.titulo_manchete}" var="semTitulo_manchete"> </c:if>

        <c:if test="${empty noticia.materia}" var="semMateria"> </c:if>
    </c:if>

    <input type="hidden" name="enviado" value="true" />  

    <h3> Inclusão de noticia</h3> 

    <table>
        <tr>
        <td><b> Data da noticia </b> </td>
        <td><input type="text" name="data_noticia_DMA" id="data_noticia_DMA"
                   <fmt:formatDate value="${noticia.data_noticia_DMA}"
                                   type="date" dateStyle="short" pattern="dd/MM/yyyy"/>
                   <%-- value="<fmt:formatDate value="${noticia.data_noticia_DMA.time}" --%>
        </td>
        <td>
            <c:if test="${semData_noticia}"><small>
                    <font color="red">Data da noticia deve estar preenchida corretamente: DD/MM/AAAA!</font>
                </small>
            </c:if>
        </td>
        </tr>
        <tr>
        <td><b> Autor </b> </td>
        <td> <input type="text" name="id_usuario" id="id_usuario"
                    value="<c:out value="${noticia.id_usuario}"> </c:out>"
                        size="10"/> </td>
            <td>
            <c:if test="${semId_usuario}"><small>   
                    <%--      <C:if test="${param.enviado} && ${empty noticia.id_usuario}">  --%> 
                    <font color="red">Codigo do Autor deve estar preenchido!</font></small>
                    </c:if>
        </td>
        </tr>
        <tr>
        <td><b> Manchete </b> </td>
        <td> <input type="text" name="titulo_manchete" id="titulo_manchete"
                    value="<c:out value="${noticia.titulo_manchete}"> </c:out>"
                        size="60"/>
            </td>
            <td>
            <c:if test="${semTitulo_manchete}"><small>
                    <font color="red">Titulo da manchete deve estar preenchido!</font></small>
                    </c:if>
        </td>
        </tr>
        <tr>
        <td><b> Noticia </b> </td>
        <td> <textarea rows="10" cols="100" name="materia" 
                       value="<c:out value="${noticia.materia}"></c:out>" >
                       </textarea>
            </td>
            <td>
            <c:if test="${semMateria}"><small>
                    <font color="red">Materia deve estar preenchido!</font></small>
                    </c:if>
        </td>
        </tr>
    </table>

    <input type="submit" value="Gravar" /> 
</form>
 
<c:import url="rodape_noticias.jsp" />

Servlet:

package br.com.noticiasWeb.controler;
 
//import br.com.noticiasWeb.controler.consistencias.Classe_consiste_noticia;
import br.com.noticiasWeb.modelo.dao.NoticiaDAO;
import br.com.noticiasWeb.modelo.javaBeans.Noticia;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;

//import java.util.*;
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;

/**
 *
 * @author Wanderlei
 */
@WebServlet(name = "ServletController", urlPatterns = {"/ServletController"})
public class ServletControler extends HttpServlet {

    /**
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //super.service(request, response);

        /* TODO output your page here. You may use following sample code. */
        NoticiaDAO nDAO = new NoticiaDAO();
        Noticia noticia = new Noticia();
        System.out.println("#1  servlet inicio ");
        try {
            System.out.println("#2  servlet inicio ");
            if (request.getParameter("id_usuario").length() == 0
                    || request.getParameter("data_noticia_DMA").length() == 0
                    || request.getParameter("titulo_manchete").length() == 0
                    || request.getParameter("materia").trim().equals("")) {

                if (request.getParameter("id_usuario").length() == 0) {
                    noticia.setId_usuario(null);
                }

                if (request.getParameter("data_noticia_DMA").length() == 0) {
                    noticia.setData_noticia_DMA(null);
                }

                if (request.getParameter("titulo_manchete").length() == 0) {
                    noticia.setTitulo_manchete("");
                }
                if (request.getParameter("materia").trim().equals("")) {
                    noticia.setMateria(null);
                }
                System.out.println("1 reenvia_Formulario_inclusao ");
                reenvia_Formulario_inclusao(noticia, request, response);
                return;
            }
            System.out.println("$ dt noticia: " + request.getParameter("data_noticia_DMA"));

            DateFormat wf_dma1 = new SimpleDateFormat("dd/MM/yyyy");
            java.sql.Date Data_amd = new java.sql.Date(wf_dma1.parse(request.getParameter("data_noticia_DMA")).getTime());
            String Data_YMD_str = new SimpleDateFormat("yyyy-MM-dd").format(Data_amd);

            System.out.println("#  data_ymd_str= " + Data_YMD_str + "#  data_amd= " + Data_amd);
            SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
            DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            Date wdt_AMD = (Date) formatter.parse(request.getParameter("data_noticia_DMA"));

            noticia.setData_noticia_DMA(wdt_AMD);
            noticia.setId_usuario(Integer.parseInt(request.getParameter("id_usuario")));
            noticia.setTitulo_manchete(request.getParameter("titulo_manchete"));
            noticia.setMateria(request.getParameter("materia"));

            System.out.println("#4 data_noticia= " + noticia.getData_noticia_DMA());

            if (noticia.getData_noticia_DMA() == null
                    || noticia.getId_usuario() == null
                    || noticia.getId_usuario() == 0
                    || noticia.getTitulo_manchete() == null
                    || "".equals(noticia.getTitulo_manchete().trim())
                    || noticia.getMateria() == null
                    || "".equals(noticia.getMateria().trim())) {
                System.out.println("2 reenvia_Formulario_inclusao ");
                reenvia_Formulario_inclusao(noticia, request, response);
                return;
            }
            SimpleDateFormat dt_ms = new SimpleDateFormat("yyyy-MM-dd HH':'mm':'ss'.'sssSSS");
            //    System.out.println("#00 dt_ms= " + dt_ms);
            String s_dat = dt_ms.format(new java.util.Date());
            String st_hora = s_dat.substring(11, 19);
            String dtstr = (Data_YMD_str + ' ' + st_hora);

            // System.out.println("@@@@ dt str= " + dtstr + " hora: " + st_hora);
            java.sql.Timestamp dt_tms = Timestamp.valueOf(dtstr);
            noticia.setData_noticia(dt_tms);
            System.out.println(" tms sql= " + dt_tms);
            nDAO.adiciona_noticia(noticia);

            RequestDispatcher chama_listagem = request.getRequestDispatcher("/lista_noticias.jsp");
            System.out.println("1 ==> chama listagem: lista_noticias.jsp " + chama_listagem);
            System.out.println("      data_noticia= " + request.getParameter("data_noticia_DMA"));
            chama_listagem.forward(request, response);
        } catch (ParseException | NumberFormatException | ServletException | IOException e) {

            System.out.println("3 reenvia_Formulario_inclusao ");
            reenvia_Formulario_inclusao(noticia, request, response);
        }
    }

    private void reenvia_Formulario_inclusao(Noticia noticia, HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // System.out.println(" $$$ data string: " + request.getParameter("data_noticia_DMA"));

        System.out.println(" $$$ dt str: " + request.getParameter("data_noticia_DMA") + " @ " + noticia.getData_noticia_DMA());
        System.out.println("      autor: " + request.getParameter("id_usuario"));
        System.out.println("    titulo: " + request.getParameter("titulo_manchete"));
        System.out.println("    materia: " + request.getParameter("materia"));
        SimpleDateFormat wf_dma = new SimpleDateFormat("dd/MM/yyyy");

        DateFormat wf_amd = new SimpleDateFormat("yyyy-MM-dd");

        DateFormat wf_dma2 = new SimpleDateFormat("dd/MM/yyyy");
        java.util.Date wdt2_AMD = null;
        try {
            wdt2_AMD = new java.sql.Date(wf_dma2.parse(request.getParameter("data_noticia_DMA")).getTime());
        } catch (ParseException ex) {
            wdt2_AMD = null;
        }

        System.out.println("@ dt2 AMD: " + wdt2_AMD);
        noticia.setData_noticia_DMA(wdt2_AMD);
        String wdt3_str = wf_amd.format(wdt2_AMD);

        //  request.setAttribute("noticia.data_noticia_DMA", wdt3_str);
        //   noticia.setData_noticia_DMA(wdt2_AMD);

        request.setAttribute("noticia", request.getParameter("noticia"));

        //request.setAttribute("noticia.data_noticia_DMA", request.getParameter("data_noticia_DMA"));

         System.out.println("@ data noticia: " + noticia.getData_noticia_DMA() + " @ " + wdt2_AMD + " @ " + wdt3_str);

        RequestDispatcher rd = request.getRequestDispatcher("/inclusao_noticia.jsp");
        rd.forward(request, response);
    }
}

Javabeans:

package br.com.noticiasWeb.modelo.javaBeans;

import java.sql.Time;
import java.sql.Timestamp;
import java.util.Date;
/**
 *
 * @author Wanderlei
 */
public class Noticia {

    /*    private Integer id_usuario;
     private Calendar data_noticia;
     private String titulo_manchete;
     private String materia;
     */
    
 //   public String data_noticia_DMA;
    public Date data_noticia_DMA;
    public Integer id_usuario;
    public String titulo_manchete;
    public String materia;
    public Timestamp data_noticia;
    private Integer micro_segundo;
    private Time hora_HMS;
    /*  protected Integer id_usuario;
     protected Timestamp data_noticia;
     protected String titulo_manchete;
     protected String materia;
     */
    public Integer getId_usuario() {
        return id_usuario;
    }

    public void setId_usuario(Integer id_usuario) {
        this.id_usuario = id_usuario;
    }

    public Timestamp getData_noticia() {
        //    System.out.println("get data_noticia= " + data_noticia);
        return data_noticia;
    }

    public void setData_noticia(Timestamp data_noticia) {
        this.data_noticia = data_noticia;
        //    System.out.println("set data_noticia= " + this.data_noticia);
    }

    //public Date getData_noticia_DMA() {
    public Date getData_noticia_DMA() {
        return data_noticia_DMA;
    }

    public void setData_noticia_DMA(Date data_noticia_DMA) {
        this.data_noticia_DMA = data_noticia_DMA;
    }

     public String getTitulo_manchete() {
        return titulo_manchete;
    }

    public void setTitulo_manchete(String titulo_manchete) {
        this.titulo_manchete = titulo_manchete;
    }

    public String getMateria() {
        return materia;
    }

    public void setMateria(String materia) {
        this.materia = materia;
    }

    public Integer getMicro_segundo() {
        return micro_segundo;
    }

    public void setMicro_segundo(Integer micro_segundo) {
        this.micro_segundo = micro_segundo;
    }

    public Time getHora_HMS() {
        return hora_HMS;
    }

    public void setHora_HMS(Time hora_HMS) {
        this.hora_HMS = hora_HMS;
    }
   
   }

Coloque os códigos entre a tag code para melhorar a visualizaão

lele_vader, bom dia!

obrigado pela atenção.
por gentilesa como eu coloco entre a " tag code"?

quando tento atachar os arquivos com os codigos ocorre este erro:

An error has occurred.

For detailed error information, please see the HTML source code, and contact the forum Administrator.

java.io.FileNotFoundException: /home/ubuntu/guj4/upload/2012/11/19/2a0d37ee09fee24315077b3cfb7358bc_151742.java_ (No such file or directory)

Eu nunca fiz upload de arquivo.
Para colocar a tag code é só colocar assim:


Código

lele_vader,

feito! (na primeira msg!)

Teste com

&lt;jsp:useBean id="dao" class="br.com.noticiasWeb.modelo.dao.NoticiaDAO" scope="page"&gt;&lt;/jsp:useBean&gt;  

Acredito que você tem que recriar o objeto e enviar como setAttribute.

request.getParameter(“noticia”)); retorna o que ?. pois noticia deveria ser um objeto e getParameter só vem string.

AmauriSpPoa,

não funcionou…grato…

Aqui no reeenvia_formulario não tinha que ser o seu objeto noticia que você passa por parâmetro ?

request.setAttribute(“noticia”,request.getParameter(“noticia”));

assim

request.setAttribute(“noticia”,noticia);

Você editou sua mensagem inicial, la ta diferente do que você tinha postado

&lt;jsp:useBean id="dao" class="br.com.noticiasWeb.modelo.dao.NoticiaDAO"&gt;&lt;/jsp:useBean&gt;    
&lt;jsp:useBean id="noticia" class="br.com.noticiasWeb.modelo.javaBeans.Noticia"  scope="request"&gt;&lt;/jsp:useBean&gt;

Em qual dos dois você fez o teste?
Se foi no primeiro tente no segundo com scope=“page” ou então com scope=“session”

AmauriSpPoa,

considere este:

    <jsp:useBean id="noticia" class="br.com.noticiasWeb.modelo.javaBeans.Noticia"  scope="request"></jsp:useBean>  

Lele_vader,

ja utilizei ’ request.setAttribute(“noticia”,noticia); ’ tambem não funcionou, desta maneira tenho quer mover todo conteudo do getParameter para ‘noticia’.

na execução a forward eu consegui visualizar que as informações ainda estão dentro do getParameter.

Ta faltando você inflar o seu objeto noticia com os dados da tela.

        noticia.setData_noticia_DMA(wdt2_AMD);//esse já tem no seu código 
        noticia.setId_usuario(Integer.parseInt(request.getParameter("id_usuario")));
        noticia.setMateria(request.getParameter("materia"));
        noticia.setTitulo_manchete(request.getParameter("titulo_manchete"));        

testei aqui som scope=“session”

AmauriSpPoa,

tambem ja tentei assim, quando fiz assim as mensagens geradas pelas inconsistências são perdidas e não são exibidas no front_end, e o campo tipo “date” que é o data_noticia_DMA não retorna preenchido para o JSP.

observando: que eu consigo visualizar o conteúdo dos campos no momento do forward os que foram preenchidos continuão comas informações.

Fiz um outro teste aqui sem o useBean

Método da servlet

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Date data = null;
        try {
            data = new Date(df.parse(request.getParameter("data_noticia_DMA")).getTime());
        } catch (ParseException ex) {
            Logger.getLogger(Teste.class.getName()).log(Level.SEVERE, null, ex);
        }
        Noticia noticia = new Noticia();
        noticia.setData_noticia_DMA(data);
        noticia.setId_usuario(Integer.parseInt(request.getParameter("id_usuario")));
        noticia.setMateria(request.getParameter("materia"));
        noticia.setTitulo_manchete(request.getParameter("titulo_manchete"));
        request.setAttribute("noticia", noticia);
        RequestDispatcher dispatcher = request.getRequestDispatcher("inclusao_noticia.jsp");
        dispatcher.forward(request, response);      
        
    }
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;
&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
        &lt;title&gt;JSP Page&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;form  action="Teste" method="post" &gt;  
            &lt;c:if test="${param.enviado}" &gt;  
                &lt;c:if test="${empty noticia.data_noticia_DMA}" var="semData_noticia"&gt;&lt;/c:if&gt;  
                &lt;c:if test="${empty noticia.id_usuario}" var="semId_usuario"&gt;&lt;/c:if&gt;  
                &lt;c:if test="${empty noticia.titulo_manchete}" var="semTitulo_manchete"&gt; &lt;/c:if&gt;  
                &lt;c:if test="${empty noticia.materia}" var="semMateria"&gt; &lt;/c:if&gt;  
            &lt;/c:if&gt;  
            &lt;input type="hidden" name="enviado" value="true" /&gt;    
            &lt;h3&gt; Inclusão de noticia&lt;/h3&gt;   
            &lt;table&gt;  
                &lt;tr&gt;  
                    &lt;td&gt;<b> Data da noticia </b> &lt;/td&gt;  
                    &lt;td&gt;&lt;input type="text" name="data_noticia_DMA" id="data_noticia_DMA"  
                &gt;&lt;fmt:formatDate value="${noticia.data_noticia_DMA}"  
                                type="date" dateStyle="short" pattern="dd/MM/yyyy"/&gt;  
                &lt;/td&gt;  
                &lt;td&gt;  
                &lt;c:if test="${semData_noticia}"&gt;&lt;small&gt;  
                        <font color="red">Data da noticia deve estar preenchida corretamente: DD/MM/AAAA!</font>  
                    &lt;/small&gt;  
                &lt;/c:if&gt;  
                &lt;/td&gt;  
                &lt;/tr&gt;  
                &lt;tr&gt;  
                    &lt;td&gt;<b> Autor </b> &lt;/td&gt;  
                    &lt;td&gt; &lt;input type="text" name="id_usuario" id="id_usuario"  
                                value="${noticia.id_usuario}"  
                                size="10"/&gt; &lt;/td&gt;  
                    &lt;td&gt;  
                &lt;c:if test="${semId_usuario}"&gt;&lt;small&gt;     
                        <font color="red">Codigo do Autor deve estar preenchido!</font>&lt;/small&gt;  
                &lt;/c:if&gt;  
                &lt;/td&gt;  
                &lt;/tr&gt;  
                &lt;tr&gt;  
                    &lt;td&gt;<b> Manchete </b> &lt;/td&gt;  
                    &lt;td&gt; &lt;input type="text" name="titulo_manchete" id="titulo_manchete"  
                                value="${noticia.titulo_manchete}"  
                                size="60"/&gt;  
                    &lt;/td&gt;  
                    &lt;td&gt;  
                &lt;c:if test="${semTitulo_manchete}"&gt;&lt;small&gt;  
                        <font color="red">Titulo da manchete deve estar preenchido!</font>&lt;/small&gt;  
                &lt;/c:if&gt;  
                &lt;/td&gt;  
                &lt;/tr&gt;  
                &lt;tr&gt;  
                    &lt;td&gt;<b> Noticia </b> &lt;/td&gt;  
                    &lt;td&gt; &lt;textarea rows="10" cols="100" name="materia"&gt;${noticia.materia}&lt;/textarea&gt;  
                    &lt;/td&gt;  
                    &lt;td&gt;  
                &lt;c:if test="${semMateria}"&gt;&lt;small&gt;  
                        <font color="red">Materia deve estar preenchido!</font>&lt;/small&gt;  
                &lt;/c:if&gt;  
                &lt;/td&gt;  
                &lt;/tr&gt;  
            &lt;/table&gt;  
            &lt;input type="submit" value="Gravar" /&gt;   
        &lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;

[quote=wamsil]AmauriSpPoa,

tambem ja tentei assim, quando fiz assim as mensagens geradas pelas inconsistências são perdidas e não são exibidas no front_end, e o campo tipo “date” que é o data_noticia_DMA não retorna preenchido para o JSP.[/quote]

Estranho nos meus dois testes funciona, mas a data vem para a tela em formato americano, ai tem que tratar no jsp para formatar no padrão desejado.

AmauriSpPoa,

onde vc definiu o id ‘${noticia.’? conforme o exemplo que vc testou?

Na linha

request.setAttribute("noticia", noticia);  

Ele está sendo setado em um atributo no request, que estará disponível na pagina JSP.

Mesmo assim, ainda não funcionou…
uma duvida: o atributo '[quote] value="${[/quote] ’ dentro do FORM (JSP) serve para mostrar o conteúdo do campo do form ok?

[quote=wamsil]Mesmo assim, ainda não funcionou…
uma duvida: o atributo '[quote] value="${[/quote] ’ dentro do FORM (JSP) serve para mostrar o conteúdo do campo do form ok? [/quote]

Sim

Posta o que você fez agora, e não ta funcionando.