PDA

View Full Version : [STRUTS] non viene eseguito il metodo execute


diablodeinos
03-07-2007, 14:03
Ho un problema con struts.
Premetto che nello stesso progetto ci sono altre pagine jsp con relative Action ed ActionForm e funzionano tutte, tranne questa!

Nella pagina "esperienze.jsp" nel momento in cui premo "Salva" visualizzo una pagina tutta bianca.
Pensavo che il problema fosse nello "struts-config.xml", cosė ho provato a mettere delle stampe: in EsperienzeForm e riscontro che viene riempita correttamente; ne ho messa una statica in "EsperienzeAction" ed anche qui il messaggio viene visualizzato. Infine ho provato nel metodo "execute" della Action e questa volta niente; sembra come se nel metodo "execute" non entri proprio!!!

Io utilizzo Eclipse come Tool di sviluppo e Tomcat 5.0 come Web Server.
Di seguito i codici java e jsp:

- esperienze.jsp

<%@ page contentType="text/html; charset=Cp1252" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-nested" prefix="nested" %>

<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title>GSP - Inserimneto esperienze</title>
<link rel="stylesheet" href="pages/stile.css" type="text/css">
<script type="text/javascript">
function controlla(){
var rit = false;

if(form.id.value=="")
window.alert("ID non valido");
else
if(form.progetto.value=="")
window.alert("Progetto non valido");
else
if(form.inizio.value=="")
window.alert("Campo 'inizio' non valido");
else
if((form.durata.value=="")||isNaN(form.durata.value))
window.alert("Durata non valida");
else
rit = true;

return rit;
}
</script>
</head>
<body>
<h1>Gestione Skills Profile - GSP</h1>
<h2>Inserimento esperienze</h2>
<br><br>

<html:form method="POST" action="/esperienze.do">
<table align=center>
<tr>
<td>ID risorsa:</td>
<td><html:text property="id"></html:text></td>
</tr>
<tr>
<td>Progetto</td>
<td><html:text property="progetto"></html:text></td>
</tr>
<tr>
<td>Cliente:</td>
<td><html:text property="cliente"></html:text></td>
</tr>
<tr>
<td>Inizio (mese/anno):</td>
<td><html:text property="inizio"></html:text></td>
</tr>
<tr>
<td>Durata (mesi):</td>
<td><html:text property="durata"></html:text></td>
</tr>
<tr>
<td></td>
<td align=center><br>
<html:reset>Reset</html:reset>
<html:submit>Salva</html:submit>
</td>
</table>
</html:form>
</body>
</html:html>




- struts-config.xml (le pagine conferma.jsp e error.jsp le uso x verificare il giusto funzionamento)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources>
</data-sources>
<form-beans>
<form-bean name="esperienze" type="inserisci.EsperienzeForm"/>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards>
</global-forwards>
<action-mappings>
<action path="/esperienze" name="esperienze" type="inserisci.EsperienzeAction" validate="false" input="/pages/esperienze.jsp">
<forward name="ok" path="/pages/conferma.jsp"/>
<forward name="ko" path="/pages/error.jsp"/>
</action>
</action-mappings>
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
<message-resources parameter="MessageResources"/>
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
<set-property property="moduleAware" value="true"/>
</plug-in>
</struts-config>




- EsperienzeForm.java

package inserisci;

import org.apache.struts.action.ActionForm;

public class EsperienzeForm extends ActionForm {
private String id;
private String progetto;
private String cliente;
private String inizio;
private int durata;


public String getCliente() {
return cliente;
}

public void setCliente(String cliente) {
System.out.println(cliente);
this.cliente = cliente;
}

public int getDurata() {
return durata;
}

public void setDurata(int durata) {
System.out.println(durata);
this.durata = durata;
}

public String getId() {
return id;
}

public void setId(String id) {
System.out.println(id);
this.id = id;
}

public String getInizio() {
return inizio;
}

public void setInizio(String inizio) {
System.out.println(inizio);
this.inizio = inizio;
}

public String getProgetto() {
return progetto;
}

public void setProgetto(String progetto) {
System.out.println(progetto);
this.progetto = progetto;
}
}




- EsperienzeAction.java (i dati andrebbero salvati nel DB, ma x prova li metto in sessione)

package inserisci;

import javax.servlet.http.*;
import org.apache.struts.action.*;
import generale.*;


public class EsperienzeAction extends Action {

static{System.out.println("static action");}

public ActionForward execute(ActionForm form,
ActionMapping mapping,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{
System.out.println("execute");
EsperienzeForm ef = (EsperienzeForm)form;

if(ef!=null){
Esperienze esperienze = new Esperienze();
esperienze.setId(ef.getId());
esperienze.setProgetto(ef.getProgetto());
esperienze.setCliente(ef.getCliente());
esperienze.setInizio(ef.getInizio());
esperienze.setDurata(ef.getDurata());

HttpSession sessione = request.getSession(true);
sessione.setAttribute("esperienze", esperienze);

return mapping.findForward("ok");
}
else
return mapping.findForward("ko");
}
}