Caros Colegas 
Estou com o seguinte problema : Estou desenvolvendo(estudo) um aplicativo simples de controle de despesas com struts.Na pagina onde cadastro as despesas teclo no botão “Cadastrar” e nada acontece , não dar erro só atualiza a url mais fica parado na mesma pagina.ele deveria cadastrar a despesa e retorna a pagina principal.
Segue o codigo para analise de vocês.
1.CADASTRARDESPESA.JSP
<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@page import = “java.util."%>
<%@page import = "java.text.”%>
<%@ taglib uri="/WEB-INF/struts-form.tld" prefix=“form” %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix=“html” %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix=“bean” %>
<html:html locale=“true”>
<%
br.dao.TipoDespesaDao tpDao = new br.dao.TipoDespesaDao();
java.util.List lista = tpDao.listar();
request.setAttribute("lista",lista);
%>
<title><bean:message key="prompt.Titulo"/></title>
</head>
<body>
<div align="center">
<div id="body">
<div id="top">
<bean:message key="prompt.TituloCadDespesa"/>
</div>
<div id="midle">
<div align="left">
<jsp:include page="/Jsp/menu.jsp" flush="false"/>
</div>
<div id="content">
<html:form action="/caddespesa.do" method="POST">
<table border="1">
<tbody>
<tr>
<td><bean:message key="prompt.MTipoDespesa"/></td>
<td><select name="txtTipoDespesa">
<c:forEach items="${lista}" var="row">
<option value="${row.cdTipoDespesa}">${row.dsTipoDespesa}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td><bean:message key="prompt.DataDespesa"/></td>
<td><html:text property="txtDataDespesa" size="10" /></td>
</tr>
<tr>
<td><bean:message key="prompt.ValorParcela"/></td>
<td><html:text property="txtValorParcela" size="10" /></td>
</tr>
<tr>
<td><bean:message key="prompt.QuantidadeParcela"/></td>
<td><html:text property="txtQuantidadeParcela" size="10" /></td>
</tr>
<tr>
<td><bean:message key="prompt.Situacao"/></td>
<td><select name="txtSituacao">
<option value="NAO PAGA">NAO PAGA</option>
<option value="PAGA">PAGA</option>
</select>
</td>
</tr>
<tr>
<td><html:submit><bean:message key="prompt.Cadastrar"/></html:submit></td>
<td></td>
</tr>
</tbody>
</table>
</html:form>
</div>
</div>
</div>
</div>
</body>
</html:html>
2.CadastrarDespesaAction.java
/*
- CadastrarDespesaAction.java
- Created on 13 de Abril de 2008, 14:32
- To change this template, choose Tools | Template Manager
- and open the template in the editor.
*/
package br.actions;
/**
*
-
@author clara
*/
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import br.dao.DespesaDao;
import br.dao.TipoDespesaDao;
import br.model.Despesa;
import br.model.TipoDespesa;
import br.forms.EditarDespesaForm;
import java.util.Collection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.io.*;
public class CadastrarDespesaAction extends Action{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res) throws ParseException,Exception {
try {
EditarDespesaForm cform = (EditarDespesaForm) form;
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);
TipoDespesaDao tdDao = new TipoDespesaDao();
Despesa d = new Despesa();
DespesaDao dDao = new DespesaDao();
d.setTipoDespesa(tdDao.pesquisar(Integer.parseInt(cform.gettxtTipoDespesa())));
// try{
d.setDtDespesa(sdf.parse(cform.gettxtDataDespesa()));
// }catch (ParseException ex) {
// ex.printStackTrace();
// }
d.setValor(Double.parseDouble(cform.gettxtValorParcela()));
d.setQtParcelas(Integer.parseInt(cform.gettxtQuantidadeParcela()));
// UsuarioDao u = new UsuarioDao();
// d.setCdUsuario(u.consulta((String)request.getAttribute(“cdUsuario”)));
d.setCdUsuario(1);
d.setDsSituacao(cform.gettxtSituacao());
System.out.println(“estou aqui 2”);
dDao.salvar(d);
return mapping.findForward(“nlistardespesa”);
} catch (ParseException ex) {
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
finally {
ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(“errors.sqlerror”));
saveMessages(req, messages);
return mapping.findForward(“excecoes”);}
}
}
3.EditarDespesaForm.java
/*
- EditarDespesaForm.java
- Created on 13 de Abril de 2008, 14:40
- To change this template, choose Tools | Template Manager
- and open the template in the editor.
*/
package br.clara.forms;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class EditarDespesaForm extends ActionForm{
private static final long serialVersionUID = 1L;
private String txtTipoDespesa;
private String txtObservacao;
private String txtDataDespesa;
private String txtValorParcela;
private String txtQuantidadeParcela;
private String txtSituacao;
public String gettxtTipoDespesa() {
return txtTipoDespesa;
}
public void settxtTipoDespesa(String txtTipoDespesa) {
this.txtTipoDespesa = txtTipoDespesa;
}
public String gettxtDataDespesa() {
return txtObservacao;
}
public void settxtDataDespesa(String txtObservacao) {
this.txtObservacao = txtObservacao;
}
public String gettxtValorParcela() {
return txtObservacao;
}
public void settxtValorParcela(String txtObservacao) {
this.txtObservacao = txtObservacao;
}
public String gettxtQuantidadeParcela() {
return txtObservacao;
}
public void settxtQuantidadeParcela(String txtObservacao) {
this.txtObservacao = txtObservacao;
}
public String gettxtSituacao() {
return txtObservacao;
}
public void settxtSituacao(String txtObservacao) {
this.txtObservacao = txtObservacao;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
txtTipoDespesa="";
txtDataDespesa="";
txtValorParcela="";
txtQuantidadeParcela="";
txtSituacao="";
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors erros = new ActionErrors();
if (txtTipoDespesa == null || txtTipoDespesa.trim().equals("")) {
erros.add(“txtTipoDespesa”, new ActionMessage(“errors.emptytxtTipoDespesa”));
}
if (txtDataDespesa == null || txtDataDespesa.trim().equals("")) {
erros.add("txtDataDespesa", new ActionMessage("errors.emptytxtDataDespesa"));
}
if (txtValorParcela == null || txtValorParcela.trim().equals("")) {
erros.add("txtValorParcela", new ActionMessage("errors.emptytxtValorParcela"));
}
if (txtQuantidadeParcela == null || txtQuantidadeParcela.trim().equals("")) {
erros.add("txtQuantidadeParcela", new ActionMessage("errors.emptytxtQuantidadeParcela"));
}
if (txtSituacao == null || txtSituacao.trim().equals("")) {
erros.add("txtSituacao", new ActionMessage("errors.emptytxtSituacao"));
}
return erros;
}
}
4.struts-config.xml
