J'ai une exception qui revient tout le temps lorsque j'essaye d'utiliser la validation dynamique de Strurs :
1 2 3
| javax.servlet.ServletException: Exception creating bean of class org.apache.struts.validator.DynaValidatorForm: {1}
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779) |
J'ai farfouillé un peu sur le net et je ne trouve rien de convainquant qui puisse m'aider à résoudre se problème....
Voici une partie de mon struts-config.xml :
1 2 3 4 5 6 7
| <struts-config>
<form-beans>
<form-bean name="frmPersonne" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="nom" type="java.lang.string" initial=""/>
<form-property name="age" type="java.lang.string" initial=""/>
</form-bean>
</form-beans> |
Déclaration du plugin :
1 2 3 4 5
|
<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="true" />
</plug-in> |
Voici maintenant le contenu de mon fichier validation.xml :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <form-validation>
<global>
<constant>
<constant-name>entierpositif</constant-name>
<constant-value>^\s*\d+\s*$</constant-value>
</constant>
</global>
<formset>
<form name="frmPersonne">
<field property="nom" depends="required">
<arg0 key="personne.nom"/>
</field>
<field property="age" depends="required,mask">
<arg0 key="personne.age"/>
<var>
<var-name>mask</var-name>
<var-value>${entierpositif}</var-value>
</var>
</field>
</form>
</formset>
</form-validation> |
Et voici comment est déclaré dans struts-config.xml le "message-resource" :
<message-resources parameter="resource.AnnuaireMessageRessource"/>
et son 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
| annuaire.personne.formulaire.nom.vide=Vous devez indiquer un nom.
annuaire.personne.formulaire.age.vide=Vous devez indiquer un age.
annuaire.personne.formulaire.age.incorrect=L'âge {0} est incorrect.
errors.header=<u1>
errors.footer=</u1>
# Struts Validator Error Messages
errors.required={0} ne doit pas être vide.
errors.minlength={0} doit avoir au moins {1} caractère.
errors.maxlength={0} ne peut avoir plus de {1} caractère.
errors.invalid={0} n'est pasn valide.
errors.byte={0} doit être un octet.
errors.short={0} doit être un entier court.
errors.integer={0} doit être un entier.
errors.long={0} doit être un entier long.
errors.float={0} doit être un réel simple.
errors.double={0} doit être un réel double.
errors.date={0} n'est pas une date.
errors.range={0} doit être dans l'intervalle {1} à {2}.
errors.creditcard={0} n'est pas un numéro de carte valide.
errors.email={0} n'est pas une adresse email valide.
personne.nom=nom
personne.age=age |
Désolé pour la longueur du post....
Le code de l'action :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package istia.st.struts.annuaire;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.io.*;
import javax.servlet.ServletException;
public class FormulaireAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
// Le formulaire est valide... (sinon on ne serait pas arrivé là...)
DynaActionForm formulaire = (DynaActionForm) form;
request.setAttribute("nom",formulaire.get("nom"));
request.setAttribute("age",formulaire.get("age"));
ActionForward af = mapping.findForward("reponse");
return af;
} //execute
} |
Si quelqu'un a une idée ça serait vraiment cool de m'en faire part, j'avoue que je ne comprends vraiment pas d'où vient cette erreur. Je précise que tous les jar nécessaires sont bien placés dans le répertoire /lib de mon appli. J'utilise la version 1.2.9 de Struts.
Merci à tous.
Salut
Partager