Problema com Struts

Caros Colegas :slight_smile:

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



ola!

primeiramente, coloque isso dentro das tags code (no menu superior…)

O Struts é um Framework MVC, acredito que vc deve ler um pouquinho mais sobre ele e sobre como funciona suas requisições a partir do trabalho em camadas.

Esqueça os scripts no html e carregue todos para suas devidas actions…

:stuck_out_tongue: