Bonjour à tous,

Suite de ce post.

Mon problème est que je ne sais pas si mon problème vient réellement de l'utilisation de FormFile ou de JXyDiff !

struts-config.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<form-beans>
	[...]
	    <form-bean name="formChoixFdm"
	    		   type="org.apache.struts.validator.DynaValidatorForm">
	    		   <form-property name="urlFdm" type="org.apache.struts.upload.FormFile"/>
	    		   <form-property name="urlFdm2" type="org.apache.struts.upload.FormFile"/>
	    </form-bean>
	</form-beans>
	<action-mappings>
		[...]
		<action
			name="formChoixFdm"
			path="/FormCompareFdm"
			scope="request"
			validate="true"
			input="/compareFdm.do"
			forward="com.mycompany.myproject.CompareFdmAction"
		>
			<!-- <forward name="succes" path="/vues/resComparaison.jsp"/> -->
			<forward name="succes" path="/vues/compareFdm.jsp"/>
			<forward name="echec" path="/vues/compareFdm.jsp"/>
		</action>
	</action-mappings>
	<message-resources parameter="com.mycompany.myproject.padRessources"/>
	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property property="pathnames"
					  value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"
		/>
		<set-property property="stopOnFirstError" value="false"/>
	</plug-in>
</struts-config>
Form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.mycompany.myproject;
 
import javax.servlet.http.HttpServletRequest;
 
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
 
public class CompareFdmForm extends ActionForm {
 
	// URL du FDM n°1
	private FormFile urlFdm = null;
 
	// URL du FDM n°2
	private FormFile urlFdm2 = null;
 
	public FormFile getUrlFdm() {
		return urlFdm;
	}
 
	public void setUrlFdm(FormFile urlFdm) {
		this.urlFdm = urlFdm;
	}
 
	public FormFile getUrlFdm2() {
		return urlFdm2;
	}
 
	public void setUrlFdm2(FormFile urlFdm2) {
		this.urlFdm2 = urlFdm2;
	}
 
	/*
	 * WARNING: In order to correctly recognize uploaded files, 
	 * the ActionForm bean associated with this form 
	 * must include a statement setting 
	 * the corresponding org.apache.struts.upload.FormFile
	 * property to null in the reset() method.
	*/
 
	public void reset(ActionMapping arg0, HttpServletRequest arg1) {
		// TODO Auto-generated method stub
		super.reset(arg0, arg1);
 
		setUrlFdm(null);
		setUrlFdm2(null);
	}
 
	// Validation
	/*public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
 
		// Gestion des erreurs
		ActionErrors erreurs = new ActionErrors();
 
		// Le chemin du 1er FDM doit être non vide
		if (getUrlFdm() == null || getUrlFdm() == "") {
			erreurs.add("urlFdmVide", new ActionMessage("error.urlFdm.vide"));
		}
 
		// Le chemin du 2ème FDM doit être non vide
		if (getUrlFdm2() == null || getUrlFdm2() == "") {
			erreurs.add("urlFdm2Vide", new ActionMessage("error.urlFdm2.vide"));
		}
 
		return erreurs;
	}*/
}
Action
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.mycompany.myproject;
 
import java.io.IOException;
import java.sql.SQLException;
 
import javax.servlet.ServletException;
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 fr.loria.ecoo.so6.xml.node.Document;
import fr.loria.ecoo.so6.xml.xydiff.DeltaConstructor;
import fr.loria.ecoo.so6.xml.xydiff.XyDiff;
 
 
public class CompareFdmAction extends Action {
 
	public ActionForward execute(ActionMapping mapping, 
								 ActionForm form, 
								 HttpServletRequest request, 
								 HttpServletResponse response)
			 					 throws IOException, ServletException, SQLException {
 
		// Lieu de stockage des delta.xml
		String cheminSauvegarde = "D:/delta.xml";
 
		// Liaison avec le Form associé 
		CompareFdmForm formChoixFdm = (CompareFdmForm)form;
 
		XyDiff xydiff;
 
		try {
			xydiff = new XyDiff(formChoixFdm.getUrlFdm().toString(), formChoixFdm.getUrlFdm2().toString());
			DeltaConstructor delta = xydiff.diff();
 
			Document doc = delta.getDeltaDocument();
 
			doc.save(cheminSauvegarde);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		return mapping.findForward("succes");
	}
}

JSP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<link rel="stylesheet" href="style/default.css" type="text/css" />
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
		<title>BLABLA- Accueil</title>
		<html:javascript formName="formChoixFdm" dynamicJavascript="true" staticJavascript="true" />
	</head>
	<body>
		<div class="menuGaucheBarre"></div>
		<div class="menuGauche">
			<div class="logoMenu"></div>
			<br />
			<div class="ident">
				<div class="titreListe">Identification</div>
			</div>
			<br />
			<div class="listeContenu">
				<div class="titreListe">Navigator</div>
				<ul class="menu">
					<li class="menu">&nbsp;<a href="index.jsp">Accueil</a></li>
					<li class="menu">&nbsp;<a href="choixMachine.do">Afficher une machine</a></li>
					<li class="menu">&nbsp;<a href="compareFdm.do">Comparer 2 FDM</a></li>
				</ul>
			</div>
		</div>
		<div class="conteneur">
			<h1>Interface de consultation blabla</h1>
			<hr />
			<html:form action="/FormCompareFdm" method="POST" enctype="multipart/form-data" focus="urlFdm" onsubmit="return validateFormChoixFdm(this);">
				<table>
					<tr>
						<th colspan="2">Comparer deux FDMs</th>
					</tr>
					<tr>
						<td class="ss-titre">FDM n°1 :</td>
						<td class="txt"><html:file property="urlFdm" size="50" /><html:errors property="urlFdm" /></td>
					</tr>
					<tr>
						<td class="ss-titre">FDM n°2 :</td>
						<td class="txt"><html:file property="urlFdm2" size="50" /><html:errors property="urlFdm2" /></td>
					</tr>
					<tr>
						<td colspan="2" align="right"><html:submit styleClass="bouton" value="Comparer" /></td>
					</tr>
				</table>
			</html:form>
			<br />
		</div>
	</body>
</html>
Erreur :
Etat HTTP 500 -

--------------------------------------------------------------------------------

type Rapport d'exception

message

description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

exception

javax.servlet.ServletException: Le chemin com.mycompany.myproject.CompareFdmAction ne commence pas par le caractère "/"
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


cause mère

java.lang.IllegalArgumentException: Le chemin com.mycompany.myproject.CompareFdmAction ne commence pas par le caractère "/"
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:107)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.23