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 

Struts - Un framework MVC pour vos applications J2EE

6.Intégration avec XDoclet

xDoclet est un outil très intéressant pour la génération automatique de code ou descripteurs de déploiement ou autres fichiers utiles.
Nous allons étudier, dans cette partie, l’intégration de XDoclet pour la génération des fichiers de configuration struts (struts-config.xml, validation.xml …).
Afin de bien comprendre le principe XDoclet, il faut savoir l’utiliser et connaître Ant (cf. Essentiel Ant).

6.1.Struts-config.xml

La génération du fichier struts-config.xml est automatisable avec XDoclet.
Grâce à XDoclet vous allez pouvoir définir directement dans votre code java :
  • Les action-mapping
  • Les action-exception
  • Les action-forward
  • Les action-form
  • Les action-dynaform

Ces définitions vont se faire à partir des tags XDoclet « @Struts » que vous pouvez retrouver à l’adresse : http://xdoclet.sourceforge.net/xdoclet/tags/apache-tags.html
Nous allons détailler les plus importants dans cette section.

6.1.1.Tags @Struts

Voici une description non exhaustive des tags les plus utilisés avec Struts :
  • @struts.action : définit un mapping pour une classe d’action et les différents attributs liés
    • name : nom de l’action (doit être unique dans l’ensemble de l’application struts)
    • type : type de la classe à utiliser (par défaut, la classe en cours). Il est possible de surcharger cette valeur dans certains cas (par exemple avec l’utilisation de framework externe tel que Spring)
    • path : chemin de l’action (url)
    • scope : domaine dans lequel l’action va exister (request, session, application ; request par défaut)
    • input : chemin d’input pour l’action
    • roles : rôle(s) autorisé(s) à accéder à cette action
    • validate : indique si struts doit valider les entrés du formulaire (true | false, true par défaut)
    • parameter : paramètre d’option de l’action (il faut mettre « action »).
  • struts.action-exception : définit un handler sur un type d’exception (liée à l’action)
    • key : clé de la propriété à utiliser pour retrouver le texte de l’erreur
    • type : nom absolu de la classe d’exception qui sera intercepté
    • handler : nom absolu de la classe à utiliser comme Handler de l’exception
    • path : chemin vers la ressource qui permettra de terminer la requête
    • scope : domaine dans lequel l’objet ActionError sera utilisé.
  • struts.action-forward : définit un « forward » local pour l’action
    • name : nom du forward qui sera utilisé dans l’action
    • path : chemin vers la ressource à utiliser
    • redirect : indique s’il faut effectuer une redirection ou non (true | false, false par défaut)
  • struts-form : définit un « form bean » et ses attributs
    • name : nom du « form bean » qui permettra de le référencer

On retrouve également les tags liés au plugin Validator :
  • struts.validator : définit la validation à effectuer sur un champ du formulaire
    • type : définit le type de validation à effectuer sur le champ (« required » par exemple)
  • struts.validator-args : définit un argument à appliquer à la validation
    • arg0value
    • arg1value
    • arg2value
    • arg3value
  • struts.validator-var : déclare une variable pour le validator
    • name : nom de la variable
    • value : valeur de la variable

D’autres attributs peuvent être utilisés dans certains cas. Nous ne les avons pas détaillé afin de simplifier cette présentation.

6.1.2.Exemples

Voici quelques exemples d’utilisation de ces tags dans le code java.



Exemple de class Action :

/**
*
* @struts.action path="/admin/comment/add/display" name="commentForm"
* scope="request" validate="false" parameter="action"
*
* @struts.action-forward name="success" path="admin.comment.add.display"
*/
public class DisplayCommentFormAction extends Action {


protected ActionForward delegateExecute(ActionMapping mappings,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws ApplicationException {


....


return mappings.findForward("success");
}
}

Utilisation avec les ActionForm :

/**
* LoginForm class.
*
* @struts.form name="loginForm"
*/
public class LoginForm extends BaseForm {

// Membres
private String loginTxt;

private String password;


/**
* Default constructor.
*
*/
public LoginForm() {
}


/**
* @return Returns the login.
* @struts.validator type="required"
* @struts.validator-args arg0value="key.form.login.required.login"
*/
public String getLoginTxt() {
return loginTxt;
}

/**
* @param login
* The login to set.
*/
public void setLoginTxt(String login) {
this.loginTxt = login;
}

/**
* @return Returns the password.
* @struts.validator type="required"
* @struts.validator-args arg0value="key.form.login.required.password"
*/
public String getPassword() {
return password;
}

/**
* @param password
* The password to set.
*/
public void setPassword(String password) {
this.password = password;
}

}

6.1.3.Intégration avec Ant

XDoclet s’intègre avec Ant afin de pouvoir automatiser son exécution au sein d’un script.

<target name="app-webdoclet" depends="app-compile">

<taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask">
<classpath>
<path refid="xdoclet.classpath" />
<path refid="web.compile.classpath" />
</classpath>
</taskdef>

<!-- xDoclet pour le web (struts et web.xml) -->
<webdoclet force="${xdoclet.force}"
destdir="${web.gen.target.dir}"
mergedir="${web.merge.dir}"
excludedtags="@version,@author"
verbose="true">

<fileset dir="${struts.source.dir}">
<include name="**/*.java" />
</fileset>

<!-- struts-config.xml -->
<strutsconfigxml
validateXML="true"
version="1.2">
</strutsconfigxml>

</webdoclet>
</target>

Il faut :
  • Déclarer la tâche « webdoclet » via « taskdef », en lui spécifiant la classe : xdoclet.modules.web.WebDocletTask à utiliser. Vous devez donc spécifier un classpath valide contenant la classe précédente (incluse dans les jars XDoclet).
  • Appeler la tâche webdoclet en lui spécifiant le répertoire de destination (destdir), les fichiers à parser (via un fileset), et la sous-tâche « strutsconfigxml » qui permet de générer le fichier struts-config.xml.

Vous pouvez également utiliser les sous tâches suivantes :
  • strutsdynaformvalidationxml : pour la génération des paramétrages de vos « dynaform ».
  • strutsvalidationxml : pour la génération du fichier validation.xml

Vous pouvez avoir plus de détails sur l’utilisation de chacune de ces tâches à l’adresse suivante : http://xdoclet.sourceforge.net/xdoclet/ant/xdoclet/modules/web/WebDocletTask.html.






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 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Essentiels de cours Java
JavaEJB 3 - Les Entreprise Java Bean version 3 (JavaBeans)
Cet essentiel est la suite de « Entreprise JavaBean 2.1 ». Cependant, nous allons étudier les nouvelles spécifications 3.0 qui simplifient énormément le développement par rapport aux EJB 2.6/20/06
JavaSWT - Créer des interfaces graphiques performantes
SWT (Standard Widget Toolkit) est une librairie graphique qui vous permet de réaliser des applications graphiques Java beaucoup plus avancées et surtout plus rapide à l’exécution.1/29/06
JavaStruts - Un framework MVC pour vos applications J2EE
Struts est un framework open-source qui vous permet de gagner du temps, mais qui permet aussi de voir des applications complexes comme une suite de composants de base : Vues, Actions, Modèles. Vous gagnez ainsi en évolutivité et en lisibilité du code.1/13/06
JavaHibernate - Persistance objet - relationnel
Cet essentiel explique comment utiliser Hibernate afin de gérer la persistance objet relationnel au sein de vos applications Java.12/14/05
JavaIntroduction J2EE - Applications d'entreprise
Cours d'introduction aux diverses technologies et outils que l'on peut rencontrer dans le monde du Java orienté entreprise J2EE12/14/05
JavaEJB 2 - Les Entreprise Java Bean (JavaBeans)
L'objectif avec EJB2 (Entreprise JavaBeans) est d'introduire les concepts de l’Ingénierie Logicielle Basée sur les Composants.12/14/05
JavaDesign Pattern - Améliorez l'architecture de vos programmes
Afin de répondre a des situation récurrentes en programmation, les "design pattern" apportent une solution type à beaucoup de contraintes liées à la programmation objet.12/14/05
JavaArchitecture J2EE - Comment organiser son application J2EE
Ce cours explique comment créer un code modulable, lisible et évolutif afin d'assurer la pérénité de son application.12/14/05
JavaLes web-services - Publication de services
Le développement tend vers les technologies du Web. Il est difficile de faire la distinction entre les différents logiciels qui sont de plus en plus intégrés au Web. Les Web Services rentrent dans l’optique de différencier bien précisément les couches.12/14/05
JavaAnt - L'automatisation des tâches du programmeur
Ecrire des scripts afin d'exécuter les tâches récurrentes10/31/05
JavaIntroduction au langage Java - Présentation & historique
Présentation des origines du langage, ainsi que se buts premiers8/11/05
JavaLa Syntaxe Java - Bases & nomenclatures
Bases de la syntaxe du langage Java8/11/05
JavaLes Classes - Concepts & héritage
Base du développement objet en Java grâce aux classes8/11/05
JavaLes Exceptions - Gestion d'erreurs
Gérer les erreurs liés à la programmation8/11/05

Articles
Eclipse Europa : le successeur de Callisto
Après Eclipse Callisto (Eclipse 3.2), la fondation Eclipse sort la nouvelle mouture d'Eclipse appelée Europa (Eclipse 3.3) faisant ainsi passer le nombre de projets embarqués de 10 à 21. Que ceux qui sont réticents aux « distributions » d'Eclipse se rassu12/21/07
JavaCruiseControl : l’outil d’intégration continue à avoir dans sa boite à outils
CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans7/2/07
JavaEJB3 - Des concepts à l'écriture du code - Editions DUNOD
Consulter le résumé du premier ouvrage du laboratoire Sun de SUPINFO : EJB3 - Des concepts à l'écriture du code. Guide du développeur, éditions DUNOD.5/27/07
JavaPassage de certification Java Web (SCWCD)
Passer une certification est toujours un moment important car cela permet de mieux faire reconnaître ses compétences face à un recruteur ou un employeur.5/12/07
JavaGoogle Web Toolkit
Google Web Toolkit est un framework java pour générer du javascript et des requêtes Ajax à partir d’un code java. Voilà comment il fonctionne.5/10/07
JavaJ2ME Vs SDE
Demain, les terminaux « légers » seront plus nombreux que les ordinateurs personnels, ce qui entraîne une bataille sur le choix d’une plateforme identique à tous ces terminaux… Aujourd’hui nous retrouvons le J2ME ainsi que le SDE qui s’offrent une rude b4/22/07

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée