Outils pour utilisateurs

Outils du site


helloworld:web:java:taglib:jsf

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
helloworld:web:java:taglib:jsf [2015/08/14 12:37] – Ajout des attributs dans les fichiers .taglib.xml roothelloworld:web:java:taglib:jsf [2020/05/10 23:56] (Version actuelle) – Suppression de la taille par défaut pour les images root
Ligne 1: Ligne 1:
-Nécessite un projet de type [[eclipse:howto:dwp|Dynamic Web Project]] avec les ''JSF'' activés.+Nécessite un projet de type [[ide:eclipse:projet|Dynamic Web Project]] avec les ''JSF'' activés.
  
 =====component + renderer===== =====component + renderer=====
-<file xml faces-config.xml> 
-<?xml version="1.0" encoding="UTF-8"?> 
-<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" 
-  version="2.2"> 
-  <component> 
-    <description>Une partie du rendu de ce composant est délégué à un Renderer</description> 
-    <display-name>Composant Heure Courante avec Renderer spécifique</display-name> 
-    <component-type>monHtmlHeureCourante</component-type> 
-    <component-class>com.llgc.TagHeureHtml</component-class> 
-  </component> 
-  <render-kit> 
-    <renderer> 
-      <display-name>Heure courante avec Renderer</display-name> 
-      <component-family>heureCourante</component-family> 
-      <renderer-type>heureAvecRenderer</renderer-type> 
-      <renderer-class>com.llgc.TagHeureRenderer</renderer-class> 
-    </renderer> 
-  </render-kit> 
-</faces-config> 
-</file> 
- 
 <file java TagHeureRenderer.java> <file java TagHeureRenderer.java>
 package com.llgc; package com.llgc;
Ligne 36: Ligne 13:
 import javax.faces.render.Renderer; import javax.faces.render.Renderer;
  
 +@FacesRenderer (componentFamily="com.llgc.heureCourante", rendererType="com.llgc.heureAvecRenderer")
 public class TagHeureRenderer extends Renderer public class TagHeureRenderer extends Renderer
 { {
Ligne 62: Ligne 40:
 import javax.faces.context.ResponseWriter; import javax.faces.context.ResponseWriter;
  
 +@FacesComponent ("com.llgc.monHtmlHeureCourante")
 public class TagHeureHtml extends HtmlOutputText public class TagHeureHtml extends HtmlOutputText
 { {
Ligne 68: Ligne 47:
   public String getFamily ()   public String getFamily ()
   {   {
-    // Le nom du rendu du composant correspond avec celui défini dans le fichier faces-config.xml, + 
-    // rubrique render-kit|renderer|component-family +    return "com.llgc.heureCourante";
-    return "heureCourante";+
   }   }
  
Ligne 91: Ligne 69:
   <context-param>   <context-param>
     <param-name>javax.faces.FACELETS_LIBRARIES</param-name>     <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
-    <param-value>/WEB-INF/tagheure.taglib.xml</param-value>+    <param-value>/META-INF/tagheure.taglib.xml</param-value>
   </context-param>   </context-param>
 </web-app> </web-app>
Ligne 106: Ligne 84:
     <javaee:tag-name>heure</javaee:tag-name>     <javaee:tag-name>heure</javaee:tag-name>
     <javaee:component>     <javaee:component>
-      <javaee:component-type>monHtmlHeureCourante</javaee:component-type> +      <javaee:component-type>com.llgc.monHtmlHeureCourante</javaee:component-type> 
-      <javaee:renderer-type>heureAvecRenderer</javaee:renderer-type>+      <javaee:renderer-type>com.llgc.heureAvecRenderer</javaee:renderer-type>
     </javaee:component>     </javaee:component>
     <javaee:attribute>     <javaee:attribute>
Ligne 137: Ligne 115:
  
 Rendu : Rendu :
-{{:helloworld:web:java:taglib:jsp:rendu_ex2.png?85x30|Rendu exemple 2}}+{{:helloworld:web:java:taglib:jsp:rendu_ex2.png|Rendu exemple 2}}
  
 =====Source XHTML===== =====Source XHTML=====
-Volé (et actualisé) depuis [[http://www.mkyong.com/jsf2/custom-tags-in-jsf-2-0/|Source]]{{:helloworld:web:java:taglib:jsf:custom_tags_in_jsf_2.0.htm.maff|Archive}}.+Volé (et actualisé) depuis [[http://www.mkyong.com/jsf2/custom-tags-in-jsf-2-0/|Custom tags in JSF 2.0]] {{ :helloworld:web:java:taglib:jsf:custom_tags_in_jsf_2.0_mkyong.com_2020-04-26_12_20_37_am_.html |Archive du 29/08/2012 le 27/04/2020}}
  
 <file xml taglibsource.xhtml> <file xml taglibsource.xhtml>
Ligne 193: Ligne 171:
   <context-param>   <context-param>
     <param-name>javax.faces.FACELETS_LIBRARIES</param-name>     <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
-    <param-value>/WEB-INF/tagheure2.taglib.xml</param-value>+    <param-value>/META-INF/tagheure2.taglib.xml</param-value>
   </context-param>   </context-param>
 </web-app> </web-app>
 </file> </file>
-<note>Il est possible de spécifier plusieurs ''taglib.xml'' dans le fichier ''web.xml'' en les séparant par des '';''.</note>+ 
 +<WRAP center round info 60%> 
 +Il est possible de spécifier plusieurs ''taglib.xml'' dans le fichier ''web.xml'' en les séparant par des '';''. 
 +</WRAP>
  
 <file xml taglib2.xhtml> <file xml taglib2.xhtml>
Ligne 217: Ligne 198:
 </file> </file>
 Rendu : Rendu :
-{{:helloworld:web:java:taglib:jsp:rendu_ex2.png?85x30|Rendu exemple 2}}+{{:helloworld:web:java:taglib:jsp:rendu_ex2.png|Rendu exemple 2}} 
 + 
 +=====Ajout d'un validateur des attributs===== 
 +En ''JSF'', il n'est possible de valider les attributs que pour des composants héritants de ''EditableValueHolder'', par exemple ''HtmlInputText'' ou encore ''HtmlSelectManyCheckbox''
 + 
 +La seule solution que j'ai trouvé pour avoir un comportement similaire à ''isValid'' de ''TagExtraInfo'' est de générer une exception ''IOException'' dans la méthode ''encodeBegin'' du ''Renderer''.
helloworld/web/java/taglib/jsf.1439548673.txt.gz · Dernière modification : 2015/08/14 12:37 de root