[JXyDiff | XMLUnit] Comparaison de fichiers XML en BdD
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 ! :?
:arrow: struts-config.xml
Code:
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> |
:arrow: Form
Code:
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;
}*/
} |
:arrow: Action
Code:
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");
}
} |
:arrow: JSP
Code:
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"> <a href="index.jsp">Accueil</a></li>
<li class="menu"> <a href="choixMachine.do">Afficher une machine</a></li>
<li class="menu"> <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> |
:arrow: Erreur :
Citation:
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