View Single Post
Old 03-07-2007, 14:03   #1
diablodeinos
Junior Member
 
Iscritto dal: Jul 2007
Città: Roma
Messaggi: 1
[STRUTS] non viene eseguito il metodo execute

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
Codice:
<%@ 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)
Codice:
<?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
Codice:
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)
Codice:
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");
	}
}
diablodeinos è offline   Rispondi citando il messaggio o parte di esso