Pessoal o aplicativo abaixo faz o seguinte:
Na classe Lancamento.jsp eu tenho as vars: data, descricao e valor
index.jsp = solicita inserir lançamentos de despesas via campo de “data” , “valor” e ''descrição" e chama a pag incluirlacamento.jsp
incluirlancamento.jsp = exibe os lançamentos efetuados e pede se quer inserir mais (volta pro index.jsp) ou gravar (passa os dados pro servlet)
servletController.jsp = grava os lançamentos (via lancamentoIO.jsp) num arquivo texto e chama a pag resultado.jsp e passa a ela os laçamentos gravados
Minha dúvida eh a seguinte:
No meu aplicativo eu considerei que a data vem como string do index.jsp para o incluirlancamento.jsp entao foi somente nessa página que fiz a conversão em Date para salvar o dado na variável data (q eh do tipo Date) na classe Lancamento.
Mas no código da apostila do Professor Antonio Passos (o qual paguei pelo acesso) ele formata a data tanto no incluirlancamento.jsp quanto no resultado.jsp. E além disso ele formata a data até na saidas de dados pro usuário que essas duas páginas tem, eqto eu nessas saidas apenas uso
Abaixo os codigos
index.jsp
<body>
<jsp:include page="cabecalho.jsp">
<jsp:param value="DAWJ - AppWebController" name="cabecalho"/>
</jsp:include>
<form action="incluirlancamento.jsp" method="post">
<fieldset style="width: 550px">
<legend><b>Lancamentos</b></legend>
<table>
<tr>
<td align"right">Data</td>
<td><input type="text" name="data"></td>
</tr>
<tr>
<td align"right">Descrição</td>
<td><input type="text" name="descricao"></td>
</tr>
<tr>
<td align"right">Valor</td>
<td><input type="text" name="valor"></td>
</tr>
</table>
</fieldset>
<br />
<input type="submit" value="incluir lançamento" />
<input type="reset" value="Limpar" />
</form>
<p>ùltima gravação realizda: ${cookie.DataUltimaGravacao.value}</p>
<jsp:include page="rodape.jsp" />
</body>
incluirlancamento.jsp
<body>
<jsp:include page="cabecalho.jsp">
<jsp:param value="DAWJ - AppWebController" name="cabecalho" />
</jsp:include>
<jsp:useBean id="lancamentoBean" class="net.rcy.appwebcontroller.modelo.Lancamento" />
<jsp:useBean id="lancamentos" class="java.util.ArrayList" scope="session" />
<%
String parametroData = request.getParameter("data");
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
formatador.setLenient(false);
%>
<jsp:setProperty name="lancamentoBean" property="data" value="<%=(Date)formatter.parse(parametroData) %>"/>
<jsp:setProperty name="lancamentoBean" property="descricao" param="descricao" />
<jsp:setProperty name="lancamentoBean" property="valor" param="valor" />
<%
lancamentos.add(lancamentoBean);
%>
<fieldset style="width= 550px">
<legend><b>Lançamento incluido</b></legend>
<table>
<tr>
<td><b>Data:</b></td>
<td>${lancamentoBean.data}</td>
</tr>
<tr>
<td><b>Descrição:</b></td>
<td>${lancamentoBean.descricao}</td>
</tr>
<tr>
<td><b>Valor:</b></td>
<td>${lancamentoBean.valor}</td>
</tr>
</table>
</fieldset>
<p>
<input type="button" value="Incluir novo laçamento"onclick="javascript:document.location='index.jsp'"/>
<input type="button" value="Gravar lançamentos" onclick="javascript:document.location='ServletController'"/>
</p>
<jsp:include page="rodape.jsp" />
</body>
resultado.jsp
<body>
<jsp:include page="cabecalho.jsp">
<jsp:param value="DAWJ - AppWebController" name="cabecalho"/>
</jsp:include>
<jsp:useBean id="lancamentos" class="java.util.ArrayList" scope="session" />
// pq ele pega a var String parametroData pra formatar se ela ja foi convertida (no incluirlancamento.jsp) pra Date e salva no objeto Lancamento.data.
//nem precisava essa formatação abaixo no meu entender, pois la na saida podia usar <td><%=lancamento.getData()%></td>
<%
String parametroData = request.getParameter("data");
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
formatter.setLenient(false);
%>
<h2>Lançamentos Gravados</h2>
<table border="1">
<tr>
<th>Data</th>
<th>Despesas</th>
<th>Valor</th>
</tr>
<%
Iterator iterator = lancamentos.iterator();
while (iterator.hasNext()){
Lancamento lancamento = (Lancamento) iterator.next();
%>
// pq ele usa formatter.format(lancamento.getData()) e formata se nao precisa e basta usar lancamento.getData()
// tb nem entendi esse formatter.format(lancamento.getData()) dele.
<tr>
<td><%=formatter.format(lancamento.getData())%></td> //nessa saida ele formata e eu so uso <%=lancamento.getData()%>
<td><%=lancamento.getDescricao()%></td>
<td><%=lancamento.getValor()%></td>
</tr>
<%} %>
<% session.removeAttribute("lancamentos");%>
</table>
<input type="button" value="Gravar novos lançamentos"
onclick="javascript:document.location='index.jsp'" />
</body>
a classe Lancamento.jsp
public class Lancamento {
private Date data;
private String descricao;
private Double valor;
public void lancamento(Date data, String descricao, Double valor){
this.data = data;
this.descricao = descricao;
this.valor = valor;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
}
valeu pessoal