wamsil1
Novembro 19, 2012, 4:47pm
#21
Eu testei também sem o javaBeans conforme aquela sugestão anterior., o problema persistiu…
Eu segui a execução (JSP => Servlet => retorno para JSP):
1 - Executo a JSP
2 - Deliberamente não digitei nada em qualquer um dos campos onde a JSP acaba gerando a msg de erro dos campos
3 - O conteúdo dos campos (preenchidos) chegam até a Servlet (pelo getParameter)
4 - A Servlet recebe e reenvia o conteúdo dos campos informados via getParameter, consegui ver conteúdo dos campos até o momento do forward
5 - Quando executa a JSP no retorno somente existem as mensagens geradas na etapa 2 mas os campos estão todos vazios.
por alguma falha o conteúdo dos campos não são demonstrados “value=${” do JSP
Quando você debuga a instancia da classe noticia está com valores antes do Dispacher?
Insisto posta o Código novamente.
wamsil1
Novembro 19, 2012, 5:05pm
#23
Segue:
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" type="date"
value=<fmt:formatDate value="${noticia.data_noticia_DMA}"
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>
<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" />
<% request.getParameter("noticia"); %>
</form>
<c:import url="rodape_noticias.jsp" />
Servlet
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
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.logging.Level;
import java.util.logging.Logger;
//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 {
//private static final long serialVersionUID =
/**
*
* @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;
}
//request.setAttribute("noticia", request.getParameter("noticia"));
System.out.println("@ dt2 AMD: " + wdt2_AMD);
noticia.setData_noticia_DMA(wdt2_AMD);
String wdt3_str = wf_amd.format(wdt2_AMD);
// noticia.setData_noticia_DMA(wdt2_AMD);
/*
noticia.setData_noticia_DMA(wdt2_AMD);
noticia.setId_usuario(Integer.parseInt(request.getParameter("id_usuario")));
noticia.setTitulo_manchete(request.getParameter("titulo_manchete"));
noticia.setMateria(request.getParameter("materia"));
*/
//request.setAttribute("noticia", noticia);
// request.setAttribute("noticia.data_noticia_DMA", request.getParameter("data_noticia_DMA"));
request.setAttribute("noticia", request.getParameter("noticia"));
request.setAttribute("noticia.data_noticia_DMA", request.getParameter(wdt3_str));
System.out.println("@ data noticia: " + noticia.getData_noticia_DMA() + " @ " + wdt2_AMD + " @ " + wdt3_str);
RequestDispatcher rd = request.getRequestDispatcher("/inclusao_noticia.jsp");
rd.forward(request, response);
}
}
Na linha 164 você esta setando
request.setAttribute("noticia", request.getParameter("noticia"));
mas deveria ser
request.setAttribute("noticia", noticia);
e descomente essas linhas
noticia.setId_usuario(Integer.parseInt(request.getParameter("id_usuario")));
noticia.setTitulo_manchete(request.getParameter("titulo_manchete"));
noticia.setMateria(request.getParameter("materia"));
wamsil1
Novembro 19, 2012, 5:32pm
#25
Pessoal,
tambem testei utilizando o comando ’ <jsp:setProperty name=“noticia” property="*" /> ’ na JSP para popular o conteúdo no Javabeans ’ ${noticia} ’ no JSP e ocorre oseguinte erro onde acussa que não consegue converter o conteúdo “dd/mm/aaaa” para o atributo/campo Date do javabeans, por favor existe alguma maneira de deixar o conteúdo “dd/mm/aaaa” compativel com o atributo/campo do javabeans?
segue o erro: emseguida o codigo JSP que alterei com o ’ <jsp:setProperty name=“noticia” property="*" /> ’ os demais codigos permanescem os mesmos.
Erro:
HTTP Status 500 -
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: org.apache.jasper.JasperException: org.apache.jasper.JasperException: PWC6338: Cannot convert “22/11/2012” for the attribute data_noticia_DMA of the bean java.util.Date: PWC6348: Property editor not registered with the PropertyEditorManager
root cause
org.apache.jasper.JasperException: org.apache.jasper.JasperException: PWC6338: Cannot convert “22/11/2012” for the attribute data_noticia_DMA of the bean java.util.Date: PWC6348: Property editor not registered with the PropertyEditorManager
root cause
org.apache.jasper.JasperException: PWC6338: Cannot convert “22/11/2012” for the attribute data_noticia_DMA of the bean java.util.Date: PWC6348: Property editor not registered with the PropertyEditorManager
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.2.2 logs.
GlassFish Server Open Source Edition 3.1.2.2
JSP:
<%--
Document : inclusao_noticias
Created on : 02/11/2012, 11:11:42
Author : Wanderlei
--%>
<%@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" type="date"
value=<fmt:formatDate value="${noticia.data_noticia_DMA}"
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>
<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" />
<% request.getParameter("noticia"); %>
</form>
<c:import url="rodape_noticias.jsp" />
wamsil1
Novembro 19, 2012, 5:34pm
#26
Amauri,
tambem ja fiz assim, desta maneira as mensagens desparecem e o campo de Date fica nullo, mesmo eu alimentando os campos no momento antes do forward.
request.setAttribute("noticia", noticia);
wamsil1
Novembro 20, 2012, 4:23pm
#27
[quote=wamsil]Amauri,
tambem ja fiz assim, desta maneira as mensagens desparecem e o campo de Date fica nullo, mesmo eu alimentando os campos no momento antes do forward.
request.setAttribute("noticia", noticia); [/quote]
wamsil1
Novembro 21, 2012, 5:21pm
#28
Consegui resolver examinando este tópico :
http://www.guj.com.br/java/259427-conversao-yyyy-mm-dd-para-ddmmyyyy
o problema era bem parecido, eu incrementei a solução com o comando "setProperty " na JSP.
agradeço a todos que me ajudaram.
wamsil1
Novembro 21, 2012, 5:22pm
#29
[quote=wamsil]Consegui resolver examinando este tópico :
http://www.guj.com.br/java/259427-conversao-yyyy-mm-dd-para-ddmmyyyy
o problema era bem parecido, eu incrementei a solução com o comando "setProperty " na JSP.
agradeço a todos que me ajudaram.[/quote]