Outils pour utilisateurs

Outils du site


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.

component + renderer

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>
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 ("<br />");
    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:attribute>
      <javaee:name>label</javaee:name>
      <javaee:required>true</javaee:required>
    </javaee:attribute>
  </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>
    <tag:heure label="test" />
  </h:body>
</f:view>
</html>

Rendu : Rendu exemple 2

Source XHTML

Volé (et actualisé) depuis Source, Archive.

taglibsource.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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">
<f:view>
<h:body>
  <table border="1">
    <tr bgcolor="yellow">
      <td>
        <font color="red">#{label}:
          <h:outputText value="#{session.lastAccessedTime}">
            <f:convertDateTime pattern="HH:mm:ss" type="date" />
          </h:outputText>
        </font>
      </td>
    </tr>
  </table>
</h:body>
</f:view>
</html>
tagheure2.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/2</javaee:namespace>
  <javaee:tag>
    <javaee:tag-name>heure</javaee:tag-name>
    <javaee:source>taglibsource.xhtml</javaee:source>
    <javaee:attribute>
      <javaee:name>label</javaee:name>
      <javaee:required>true</javaee:required>
    </javaee:attribute>
  </javaee:tag>
</javaee:facelet-taglib>
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/tagheure2.taglib.xml</param-value>
  </context-param>
</web-app>

<note>Il est possible de spécifier plusieurs taglib.xml dans le fichier web.xml en les séparant par des ;.</note>

taglib2.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/2">
<h:head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Insert title here</title>
</h:head>
<h:body>
  <tag:heure label="test" />
</h:body>
</html>

Rendu : Rendu exemple 2

helloworld/web/java/taglib/jsf.1439548673.txt.gz · Dernière modification : 2015/08/14 12:37 de root