Académique Documents
Professionnel Documents
Culture Documents
SERLI : www.serli.com
Socit de services en informatique
Fond en 1981
Situe sur le site du Futuroscope, Poitiers
Ralisation de logiciels et assistance technique
Domaines de comptences
Systmes dinformations
Embarqu et temps rel
Systmes et rseaux
Gestion Electronique de Document (GED, PDM / PLM)
keulkeul.blogspot.com
Solutions Linux 2007 : Salon des Solutions Open Source pour lentreprise
Struts properties.en
Vue
Biblio. Perso. Ressources
Struts - M. Baron - Page 319
Struts : principe gnrique de la mthode : Contrleur
<url-pattern>*.do</url-pattern>
</servlet-mapping> Possibilit de dfinir
...
plusieurs ActionServlet pour
une mme application Web
Toute URL terminant par .do
est traite par le contrleur
Struts - M. Baron - Page 321
Struts : le fichier configuration struts-config.xml
<action-mappings>
<action au contrleur celui-ci redirige vers
path="/monnom" /vues/mapage.jsp
parameter="/vues/mapage.jsp"
type="org.apache.struts.actions.ForwardAction" />
</action-mappings>
</struts-config>
validate="true"
input="/pageerreurs.do" problme
parameter="/vues/mapage.jsp"
type="org.apache.struts.actions.ForwardAction" />
</action-mappings>
</struts-config>
}
} catch (Exception e) {
erreurs.add("ageincorrect",
keulkeul.blogspot.com
new ActionMessage("formulaire.age.incorrect",age));
}
}
return erreurs;
}
}
Depuis la nouvelle version 1.2, il faut utiliser
ActionMessage et non ActionError (dsapprouve)
Struts - M. Baron - Page 334
Struts : ActionForm et ActionErrors
<html:errors/>
<html>
<head>
<title>Personne</title>
</head>
<body>
<h2>Les erreurs suivantes se sont produites</h2>
<html:errors bundle="erreur" />
<html:link page="/formulaire.do">
Retour au formulaire
</html:link>
keulkeul.blogspot.com
</body>
</html> Emplacement des
fichiers properties
req.setAttribute("nom", formulaire.getNom());
Grce au paramtre
req.setAttribute("age", formulaire.getAge());
ActionForm on a accs
return mapping.findForward("response"); au contenu du Bean
}
}
</html:link>
</body>
</html>
Les objets ActionForm sont des Beans qui permettent de stocker des
proprits statiques et de les valider
Un constat
les valeurs dun formulaire sont des chanes de caractres : String pour les
valeurs uniques et String[] pour les valeurs champs multiples
il faut redfinir chaque fois des get et des set pour les proprits
Ralisation
utilisation de la classe DynaActionForm
modification de la balise <form-bean>
Struts - M. Baron - Page 342
Struts : DynaActionForm
<struts-config>
keulkeul.blogspot.com
<form-beans>
<form-bean name="formPersonne" type="monpackage.PersonneDynaActionForm" >
<form-property name="age" type="java.lang.String" initial="" />
<form-property name="nom" type="java.lang.String" initial="" />
</form-bean>
Dclaration des
</form-beans> deux proprits
<action-mappings>
...
Le fichier <struts-config.xml>
Struts - M. Baron - Page 344
Struts : DynaActionForm
req.setAttribute("nom", formulaire.get("nom"));
req.setAttribute("age", formulaire.get("age"));
Il faut modifier
return mapping.findForward("response"); en consquence
} laction associe
}
keulkeul.blogspot.com
Constats
La vrification ct client est longue, explicitement non performante car
longue dbuguer et ncessite lapprentissage du langage JavaScript
La vrification de surface na pas lieu dtre ralis sur le serveur
La solution par un Bean ActionForm et par la mthode validate est rptitive
car aucune aide la vrification
description
...
</global>
<formset>
... Description de lensemble des
</formset>
</form-validation> formulaires
Description ...
<global> Valeur dune
dune constante <constant-name>...</constant-name>
<constant-value>...</constant-value> constante
</global>
...
\B : le contraire de \b
Struts - M. Baron - Page 354
Struts : Validator : Expression Rgulire :
autre mta-caractres
Accolades {n,m} : les accolades agissent comme ltoile, litration
est comprise entre n et m
Alternative | : a | b => a or b
</field>
Description de ...
donns concernant les
deux formulaires </form> diffrents paramtres
<form name="..." > du formulaire
...
</form>
...
...
<field property="prop1" depends="required, mask" >
<var-name>mask</var-name>
<var-value>^\s*\d+\s*$</var-value>
keulkeul.blogspot.com
</field>
...
validator-rules.xml
Fichier validator-rules.xml par dfaut
errors.required={0} is required.
errors.invalid={0} is invalid.
errors.email={0} is an invalid e-mail adress
<action
path="/main" name="formPersonne" scope="session" validate="true" input="/erreurs.do"
parameter="/vues/main.html" type="monpackage.FormulaireAction">
... Validation des donnes du
</action>
formulaire ct serveur active
<plug-in className="org.apache.struts.validator.ValidatorPlugIn" >
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
</struts-config>
...
keulkeul.blogspot.com
Fichier de validation.xml
Struts - M. Baron - Page 362
Struts : Validator : criture des contraintes dintgrit
FormPersonne
Ajouter la balise <javascript> avec lattribut formName="formPersonne"
<!-- Begin
function validateFormPersonne4(form) {
if (bCancel)
return true; Le code JavaScript a t
else
var formValidationResult; gnr automatiquement par
formValidationResult = validateRequired(form) &&
validateMask(form); le framework Struts
return (formValidationResult == 1);
}
...
Struts - M. Baron - Page 365
Struts : changement de Locale
setLocale(HttpServletRequest,Locale)
HttpServletRequest : permet daccder la session de l utilisateur
Locale : objet relatif la nouvelle locale
Struts - M. Baron - Page 366
Struts : changement de Locale
<html>
<head>
<title><bean:message key="welcome.title"/></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
Solution pour afficher une
<body>
<p><bean:message key="welcome.message"/></p>
cl dune ressource
<table width="200" border="0">
<tr>
<th scope="col"><html:link page="/locale.do?locale=fr" ><html:img
page="/vues/french.gif" width="23" height="20" /></html:link></th>
keulkeul.blogspot.com
} else { requte
ma_locale = new Locale("fr","FR");
}
this.setLocale( req, ma_locale);
return mapping.findForward("success"); La locale est modifie au
}
} niveau session
Fichier properties
english
welcome.title=Flag Application
welcome.message=Change language by clicking on the good flag
Fichier properties
french
keulkeul.blogspot.com
welcome.title=Application Drapeau
welcome.message=Changer le langage en cliquant sur le bon drapeau
<param-value>/WEB-INF/module1/struts-config.xml</param-value>
</init-param>
...
Pour chaque <servlet-mapping>
struts-config.xml <servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
supplmentaire ajouter </servlet-mapping>
une balise <init-param> ...
module1 struts-config.xml
Chaque module est dcrit par
keulkeul.blogspot.com
un fichier struts-config.xml
module 2 struts-config.xml
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/module1</param-name>
<param-value>/WEB-INF/module1/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/module2</param-name>
<param-value>/WEB-INF/module2/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/module3</param-name>
keulkeul.blogspot.com
<param-value>/WEB-INF/module3/struts-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
Le fichier web.xml
Struts - M. Baron - Page 372
Struts : fichier struts-config.xml multiples
Exemple (suite) : une petite application qui fait coucou plusieurs fois
<?xml version="1.0" encoding="ISO-8859-1"?>
<struts-config>
<action-mappings>
<action path="/welcome" parameter="/vues/welcome.jsp"
type="org.apache.struts.actions.ForwardAction" />
</action-mappings>
</struts-config>
Permet didentifier
Le fichier struts-config.xml
le module vis
<%@ taglib uri="htmlstruts" prefix="html" %>
<ul>
<li><html:link module="/module1" action="/module1">Module 1</html:link></li>
keulkeul.blogspot.com
Le fichier
welcome.jsp
Exemple (suite) : une petite application qui fait coucou plusieurs fois
<?xml version="1.0" encoding="ISO-8859-1"?>
<struts-config>
<action-mappings>
<action path="/module1" parameter="/vues/module1.jsp"
type="org.apache.struts.actions.ForwardAction" />
</action-mappings>
</struts-config>
Le fichier module1.jsp
<html>
<head>
<fmt:setBundle basename="erreur" />
<title><fmt:message key="welcome.title" /></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Reprise de lexemple avec
</head> les drapeaux.
<body> La balise setBundle permet
<p><fmt:message key="welcome.message" /></p><br>
dindiquer la ressource
<table width="200" border="0"> properties
<tr>
<th scope="col"><html:link page="/locale.do?locale=fr" ><html:img
keulkeul.blogspot.com
Rsultat si on choisit la
langue anglaise
}
this.setLocale( req, ma_locale);
req.getSession().setAttribute("javax.servlet.jsp.jstl.fmt.locale.session",
ma_locale);
return mapping.findForward("success");
}
}