helloworld:web:java:taglib:jsf
Ceci est une ancienne révision du document !
Nécessite un projet de type Dynamic Web Project avec les JSF
activés.
- 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>
- TagHeure.java
package com.llgc; import javax.faces.component.UIComponent; import javax.faces.webapp.UIComponentELTag; // Le nom de cette classe correspond avec celui défini dans le fichier tld, rubrique tag-class. public class TagHeure extends UIComponentELTag { private String label; public String getLabel () { return label; } public void setLabel (String label) { this.label = label; } @Override public String getComponentType () { // Le nom du type du composant correspond avec celui défini dans le fichier faces-config.xml, // rubrique component|component-type return "monHtmlHeureCourante"; } @Override public String getRendererType () { // Le nom du rendu du composant correspond avec celui défini dans le fichier faces-config.xml, // rubrique render-kit|renderer|renderer-type return "heureAvecRenderer"; } @Override protected void setProperties (UIComponent composant) { composant.getAttributes().put("label", label); super.setProperties (composant); } }
- TagHeureRenderer.java
package com.llgc; import java.io.IOException; import java.util.Calendar; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; public class TagHeureRenderer extends Renderer { @Override public void encodeBegin (FacesContext context, UIComponent component) throws IOException { Calendar calendrier = Calendar.getInstance (); String intitule = (String) component.getAttributes ().get ("label"); String heureCourante = calendrier.get (Calendar.HOUR) + ":" + calendrier.get (Calendar.MINUTE) + ":" + calendrier.get (Calendar.SECOND); ResponseWriter out = context.getResponseWriter (); out.write ("<table border=\"1\"><tr bgcolor=\"yellow\"><td><font color=\"red\">" + intitule + ":" + heureCourante + "</font></td></tr></table>"); super.encodeBegin (context, component); } }
- TagHeureHtml.java
package com.llgc; import java.io.IOException; import javax.faces.component.html.HtmlOutputText; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; public class TagHeureHtml extends HtmlOutputText { @Override 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 "heureCourante"; } @Override public void encodeEnd (FacesContext context) throws IOException { ResponseWriter out = context.getResponseWriter (); out.write ("</b>"); super.encodeEnd (context); } }
- web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <context-param> <param-name>javax.faces.FACELETS_LIBRARIES</param-name> <param-value>/WEB-INF/tagheure.taglib.xml</param-value> </context-param> </web-app>
- tagheure.taglib.xml
<?xml version="1.0" encoding="UTF-8"?> <javaee:facelet-taglib version="2.0" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd "> <javaee:namespace>http://llgc.org</javaee:namespace> <javaee:tag> <javaee:tag-name>heure</javaee:tag-name> <javaee:component> <javaee:component-type>monHtmlHeureCourante</javaee:component-type> <javaee:renderer-type>heureAvecRenderer</javaee:renderer-type> </javaee:component> </javaee:tag> </javaee:facelet-taglib>
- taglib.xhtml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:tag="http://llgc.org"> <f:view> <h:head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </h:head> <h:body> <p> <tag:heure label="test" /> </p> </h:body> </f:view> </html>
helloworld/web/java/taglib/jsf.1439499387.txt.gz · Dernière modification : 2015/08/13 22:56 de root