![]() |
![]() |
![]() |
|
![]() |
|
www.linkcom.com.br | ![]() |
|
Desenvolvendo uma TagLib com suporte a template
IntroduçãoUm dos grandes problemas dos frameworks atuais é o desenvolvimento de novos componentes visuais e a grande quantidade de "copy/paste" que são feitos durante a codificação de um projeto. Neste tutorial abordaremos como desenvolver uma taglib usando as bibliotecas que o NEO te fornece, usando o engine do jsp como template. Criando o arquivo tldA primeira etapa para a criação de um novo componente é o desenvolvimento da tld, que é um xml que faz um mapeamento das propriedades criadas no tld para o objeto que representa a sua tag. <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" 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"> <description>Neo library</description> <display-name>Neo library</display-name> <tlib-version>1.0</tlib-version> <short-name>neoframeworkutil</short-name> <uri>neoframeworkutil</uri> <tag> <description></description> <name>label</name> <tag-class>org.neoframework.tutorial.tag.LabelTag</tag-class> <body-content>empty</body-content> <attribute> <description></description> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <description></description> <name>label</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
<attribute> <description></description> (Define a descrição do atributo) <name>value</name> (Define o nome. ex: <util:label value="algumacoisa"/>) <required>false</required> (Define se o atributo é obrigatório) <rtexprvalue>true</rtexprvalue> (Define se você pode usar EL. ex: <util:label value="${bean.value}"/>) </attribute> Desenvolvimento do arquivo java da tag.public class LabelTag extends TemplateTag {protected String value; protected String label; @Override protected void doComponent() throws Exception { pushAttribute("value", value); pushAttribute("label", label); includeJspTemplate(); popAttribute("label"); popAttribute("value"); } public String getLabel() { return label; } public String getValue() { return value; } public void setLabel(String label) { this.label = label; } public void setValue(String value) { this.value= value; } } Primeiro criamos a nossa classe qualquer e extendemos a TemplateTag. Esta que possibilita que o componente utilizado seja utitizado dentro de panelGrid, sem que perca a formatação, caso não queira esta funcionalidade, extenda a classe BaseTag. Em seguida criamos as mesmas propriedades que foram feitas na tld, que foram "value" e "label": protected String value; protected String label; Depois faremos os getters e setters, que são usados para que a api do jsp injete os valores inseridos na sua tela passe para o arquivo da tag. Devemos sobrescrever o método "doComponent" que é o responsável de renderizar a tag. Em seguida vamos mandar os dados recebidos da tela pelas propriedades e vamos enviar para o template os dados necessários. Para isso utilizaremos o método pushAttribute, que é semelhante ao request.setAttribute da action, que poe um objeto no escopo e envia para o jsp. No nosso caso a finalidade deste método é o mesmo, envia o dado para o nosso template. Em seguida usaremos o método includeJspTemplate, que chama o nosso template. No caso o método includeJspTemplate() põe por default o caminho da classe java. Ex. se temos uma classe que está em org.neoframework.teste.TutorialTag, significa que tem um jsp no pacote org.neoframework.teste de nome TutorialTag.jsp. Depois usamos o popAttribute para remover o objeto do escopo da tag. Desenvolvimento do jsparquivo LabelTag.jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="n" uri="neo"%> <%@ taglib prefix="t" uri="template"%> <n:panel>${label}</n:panel> <n:panel>${value}</n:panel> Como você pode perceber, o desenvolvimento de tags extra no neo é feita de maneira simples, e você também pode usar uma tag já pronta dentro de outra tag que você irá montar, desta maneira os códigos são aproveitados. |
Últimas postagens
Dúvida com videos em flash e jsp
Autor: thiago cassimiro
Criptografar senhas Postgresql
Autor: labavel
Fazer upload da imagem em disco e no banco
Autor: labavel
Estilo no detalhe
Autor: Tchaco
Acessar o equivalente ao Neo.getUser() dentro da JSP
Autor: konkix
Dúvida de iniciante
Autor: Eder
Acesso a banco de dados
Autor: Nunes
Gravar Imagem no Banco
Autor: Tchaco
Campos AUTOCOMPLETE
Autor: vanessa
Assinatura Digital
Autor: biharck
Erro ao fazer update [RESOLVIDO]
Autor: Tchaco
Projeto NEO pode ser utilizado em um grande cliente do grande ABC.
Autor: Nunes
Layout Mestre Detalhe
Autor: viniciusst
Problemas com o type CPFCNPJ
Autor: viniciusst
Combo de Estado
Autor: viniciusst
Suporte a dois SGBD's Simultâneos
Autor: biharck
Many-to-Many
Autor: Tux
Gerando relatórios
Autor: viniciusst
Problemas com filtro listagem
Autor: vberga
Projeto descontinuado
Autor: viniciusst
Crud com erro - MySQL
Autor: viniciusst
Erro de cast no DAO
Autor: biharck
@DescriptionProperty Multiplos
Autor: joaopedro
Geração de tabelas - CRUD
Autor: Nunes
iReport
Autor: jlevi
Impressão de PDF em Bamatech MP20-MI
Autor: Alisson
Retorno - Novidades
Autor: vinicius.janones
CRUD Avançado
Autor: cassioseffrin
CRUD
Autor: miltonmmjr
Upload Multiplo de Imagem
Autor: robmsjr
Problema com anotação
Autor: tulio
Integração com Hibernate
Autor: Nunes
Dúvida quanto à referência a imagens
Autor: mmfalcao
Problema com atributo do tipo byte[]
Autor: tulio
Relacionamento Many to Many
Autor: LeonardoBH
Artigos, Livros e documentação
Autor: Nunes
Problema ao subir aplicação de upload de arquivos
Autor: cassioseffrin
Neo versão 3.4.0
Autor: pedro.goncalves
Problemas neo 3.4 + jboss 5 e Cascade no Hibernate
Autor: vberga
Erro ao anotar @Bean
Autor: edson.goncalez
Suporte a paginação
Autor: int80h
Menu vertical
Autor: fabricio.costa
Crud
Autor: fabricio.costa
Relatorio JSP
Autor: vberga
Meu primeiro CRUD
Autor: r@mon
datagrid
Autor: Tchaco
Modificar Tag Template
Autor: vberga
Validação
Autor: vberga
tela não crud
Autor: luizlcfc
detalhe com checklist
Autor: biharck
|
| Copyright © 2007 www.neoframework.org. Projeto sob a licença LGPL. |