Facelets + Tag Personalizada..?

7 respostas
T

Seguinte sem usar facelets eu fiz uma tag, ± Assim :

package coreservlets;

import javax.faces.component.UIComponentBase;
import javax.faces.context.ResponseWriter;
import javax.faces.context.FacesContext;
import java.io.IOException;

public class HtmlSimpleDate extends UIComponentBase {
	
	public void encodeBegin(FacesContext context)throws IOException {
	  ResponseWriter writer = context.getResponseWriter();
	  writer.writeText("Texto da Tag Person", null);
	}
	
	public String getFamily() {
                  return null;
                }
}

Eu fiz tudo,as classes java, o mapeamento nos .xml, funcionou muito bem (Sem o Facelets)…
O problema é que se eu estiver usando o Facelets tudo para de funcionar, como que se o facelets nao reconhecesse a minha tag na JSP
E agora como eu faço uma tag dessas usando facelets ??

7 Respostas

F

Entao Cara, Coloca o Codigo pra eu dar uma Olhada , mas facelets nos trabalhamos com xhtml…

me manda o codigo…

T

faces-config.xml

<component>
      <display-name>custom</display-name>
      <component-type>HtmlSimpleDate</component-type>
      <component-class>coreservlets.HtmlSimpleDate</component-class>
    </component>

HtmlSimpleDate

package coreservlets;

import javax.faces.component.UIComponentBase;
import javax.faces.context.ResponseWriter;
import javax.faces.context.FacesContext;
import java.io.IOException;

public class HtmlSimpleDate extends UIComponentBase {

	public HtmlSimpleDate(){
		super();
	}
	
	public void encodeBegin(FacesContext context)throws IOException {
	  ResponseWriter writer = context.getResponseWriter();
	  writer.startElement("div", this);
	  writer.writeAttribute("style", "color : red",null);
	  writer.writeText("Texto da Tag Person", null);
	  writer.endElement("div");
	}
	
	public String getFamily() {
      return null;
    }
}

HtmlSimpleDateTag

package coreservlets;

import javax.faces.webapp.*;

public class HtmlSimpleDateTag extends UIComponentTag {
	
   public String getComponentType() {
     // Associates tag with component in faces-config.xml
     return "HtmlSimpleDate";
   }
   
   public String getRendererType() {
	 // Component renders itself in encodeBegin, so return null.
     return null;
   }
}

htmlSimpleDate.tld

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0"
        xmlns="http://java.sun.com/xml/ns/j2ee">
        
  <tlib-version>1.0</tlib-version>
  <short-name>jsf-custom-components</short-name>
  <uri>http://coreservlets.com/jsf/simple</uri>
  <tag>
    <description>Outputs date in server's timezone</description>
    <name>simpleDate</name>
    <tag-class>coreservlets.HtmlSimpleDateTag</tag-class>
    <body-content>empty</body-content>
    <attribute><name>id</name></attribute>
    <attribute><name>rendered</name></attribute>
  </tag>
    
</taglib>

Na JSP

<head><title><h:outputText value="msg.docflowTitulo"/></title></head>

<body>
  <f:view>
   <h:form>
		   <custom:simpleDate />
   </h:form> 
  </f:view>		
</body>

Ta ai… xD
Qual o problema de usar .jsp em vez de .xhtml ???

ericogr

Talvez isso possa ajudar…

http://geocities.yahoo.com.br/ericomercial/TutorialParaCriarComponenteJsfFaceletsV2.pdf

F

Qual o erro que esta dando???

T

Não da nenhum erro… colocar a tag la é a mesma coisa de nao colocar nada…

F

Vamos por Parte, oq ue vc esta usando de framework???

T

uso JSF + Facelets + JSP !
Eu testei esse codigo em um outro projeto que só tem JSF e usei JSP, e funcionou…

Mas agora nesse JSF + Facelets + JSP, Acontece isso ai, Colocar a tag la é a mesma coisa de nao colocar nada… ele simplismente ignora.

Criado 30 de outubro de 2007
Ultima resposta 30 de out. de 2007
Respostas 7
Participantes 3