brLayout - Gerenciador de Templates

22 respostas
black_fire

E aí galera, blz?

Seguinte, acabei de incluir um projeto no SourceForge para gerenciamento de templates.

Tá sem documentação, porém ele funciona como o Tiles.

Ele funciona com qualquer controler, ou até mesmo servlet puro.
Estou usando aki no meu trabalho já faz uns dois meses e está bem estável.

Quem quiser dar uma olhada e testar segue o link abaixo:
Basta baixar o arquivo war e fazer o deploy.

Abraço galera!

22 Respostas

fmeyer

geralemte o pessoal costuma distribuir os projetos como .zip, .tar.gz ou .tar.bz2 como forma de padronizacao.

só uma dica :wink:

black_fire

Valeu a dica, já está lá o arquivo .zip

+brLayout-1.0.zip
- Jar
- Source
- war

Abraço

boaglio

Qual a diferença desse projeto e do EasyTemplates?

black_fire

Nao conhecia o EasyTemplate nao.
Mas pelo q vi a configuração das paginas no brLayout é mais simples.

Nao precisa de Classes Java, apenas configurado no XML
voce monta o seu template.

E também tem suporte a herança.

black_fire
Segue abaixo um exemplo de configuração dos templates: brlayout-defs.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!-- DEFINING THE RESOURCE FILE -->
<brlayout-definitions
	resource="brlayoutMessages">

	<!-- DEFINING BASE MODEL -->
	<model name="base" path="/templates/mainPage.jsp">
		<put name="title"	value="${title}" />
		<put name="head"	value="/templates/head.jsp" />
		<put name="body"	value="${body}" />
		<put name="menu"	value="/templates/menu.jsp" />
		<put name="footer"	value="/templates/footer.jsp" />
		<put name="link.desc"	value="${link.desc}" />
		<put name="link"	value="${link}" />
	</model>

	<!-- EXTENDING BASE MODEL FILLING VARIABLES -->
	<model name="hello" extends="base">
		<put name="title"	value="hello.title" />
		<put name="body" value="/hello.jsp" />
		<put name="title"	value="hello.title" />
		<put name="link.desc"	value="hello.google.desc" />
		<put name="link"	value="hello.google.link" />
	</model>

</brlayout-definitions>
C

Legal cara.
Quais são as vantagens dele em relação ao Tiles?

Daniel_Quirino_Olive
black_fire:
Segue abaixo um exemplo de configuração dos templates: brlayout-defs.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!-- DEFINING THE RESOURCE FILE -->
<brlayout-definitions
	resource="brlayoutMessages">

	<!-- DEFINING BASE MODEL -->
	<model name="base" path="/templates/mainPage.jsp">
		<put name="title"	value="${title}" />
		<put name="head"	value="/templates/head.jsp" />
		<put name="body"	value="${body}" />
		<put name="menu"	value="/templates/menu.jsp" />
		<put name="footer"	value="/templates/footer.jsp" />
		<put name="link.desc"	value="${link.desc}" />
		<put name="link"	value="${link}" />
	</model>

	<!-- EXTENDING BASE MODEL FILLING VARIABLES -->
	<model name="hello" extends="base">
		<put name="title"	value="hello.title" />
		<put name="body" value="/hello.jsp" />
		<put name="title"	value="hello.title" />
		<put name="link.desc"	value="hello.google.desc" />
		<put name="link"	value="hello.google.link" />
	</model>

</brlayout-definitions>

Nào tem um DTD ou um XML Schema? Como você valida o XML?

black_fire

carneiro:
Legal cara.
Quais são as vantagens dele em relação ao Tiles?

Peguei o conceito basico do Tiles e fiz a implementação da mesma forma.
Mas paraticularmente, pra mim a maior vantagem é nao estar amarrado ao Struts, desta forma se vc precisa alterar o seu controler, o seu template de página não está amarrado a ele.

black_fire

Verdade Daniel, vou criar o DTD! :?

Mas hoje eu carrego o xml para um bean e faço a validação dos atributos via java.

Vou ver se trabalho essa semana no DTD.
Valeu o toque!

renatosilva

Num é melhor ver se algum erro no mapeamento pro bean dá algum erro?

black_fire

É exatamente o que está acontecendo hj.
Se houver erro de mapeamento, ele diz q houve um problema de configuração.

Se houver erro em uma tag específica, ele nao carrega o template com problema e carrega os outros.

Luca

Olá

Parabéns!

Não crie DTD. Aproveite a ocasião e estude Schema. Há 2 tutoriais muito bons em:
http://www.xfront.com/schematutorialchangehistory.html
e
http://www.w3schools.com/schema/default.asp

É um só pouquinho mais difícil escrever um schema. A vantagem de entender de schema é que fica muito mais fácil entender mensagens SOAP, WSDL e coisas que a cada dia entrem no nosso vocabulário.

[]s
Luca

renatosilva

É exatamente o que está acontecendo hj.
Se houver erro de mapeamento, ele diz q houve um problema de configuração.

Se houver erro em uma tag específica, ele nao carrega o template com problema e carrega os outros.

Então, não tá baum?

black_fire

Creio q sim, mas é legal seguir um padrão.

Quando eu estava estudando o código do Tiles, ele está fazendo o parse da mesma forma q eu fiz, porém por padrão existe um dtd, mesmo sem validação.

Vou dar uma olhada no schema pra ver como ele pode ajudar na configuração.

Abraço

renatosilva

O schema é a evolução do DTD

Rubem_Azenha

black_fire:
Nao conhecia o EasyTemplate nao.
Mas pelo q vi a configuração das paginas no brLayout é mais simples.

Nao precisa de Classes Java, apenas configurado no XML
voce monta o seu template.

E também tem suporte a herança.

Pode haver uma forte discussão se o fato de ser configurado via XML é realmente uma vantagem :slight_smile:
Não tem como criar uma ponte para configuração programática?

Mauricio_Linhares

Configuração programática de Templates? Em HTML né?

Até porque ela é a linguagem na qual as páginas são escritas :wink:

Sobre a configuração, a melhor solução que eu vi até hoje foi o que os caras do Facelets fizeram, vale a pena uma conferida -&gt https://facelets.dev.java.net/

Outra coisa, o Tiles não depende do Struts, usei muito o Tiles com Spring MVC e ele sempre funcionou perfeitamente.

rodrigousp

Uma dica…
Existem geradores automáticos de XSD e DTD.

Uma aplicação web que faz isto (minha opção)
http://www.hitsw.com/xml_utilites/

Um programa em C# (antigamente também era um serviço)
http://www.gotdotnet.com/team/xmltools/xsdinference/XSDInference.exe

A versão Mono
http://www.mono-project.com/XML_Schema_Inference

Luca

Olá

rodrigousp:
http://www.gotdotnet.com/team/xmltools/xsdinference/XSDInference.exe

O XSDinference agora se baixa direto da Microsfoft como por coincidência hoje mesmo eu indiquei em http://www.guj.com.br/posts/list/42046.java#223656

Mas precisa tomar cuidado com os geradores automáticos como o infer pois eles não geram tudo como padrões (patterns) por exemplo.

[]s
Luca

black_fire

Inicialmente o Tiles era separado, depois foi Integrado com o Struts, porém hoje em dia nao tem como achar essa lib separada do Tiles (pelo menos eu nao achei), tanto que varios usuarios de Webwork, acabam optando pelo Sitemesh, porém este nao é uma ferramenta de templates e sim um decorador e algumas coisas ficam muito complicadas fazer com ele.

Já em relação a configuração, como já disse antes, tentei fazê-la o mais próxima possivel do Tiles, pois desta forma, no caso de uma migração do Struts para outro Controler nao haveria quase nenhuma alteração para mudar do Tiles para o brLayout

bgbraga

bgbraga

É isso tem a ver com gosto mesmo.
Eu já prefiro o SiteMesh do que o Tiles. Acho muito mais simples de usar, dá para criar templates sim, e acho que facilita a integração do programador com o designer.

Quanto ao brLayout, eu acho legal se ele passar a ter mais recursos que o Tiles e mais facilidades.
Copiar para ficar igual, eu já acho meio estranho…

Criado 21 de setembro de 2006
Ultima resposta 23 de set. de 2006
Respostas 22
Participantes 11