[quote=otavio]neófito e victorwss, tenho uma boa notícia: dá pra usar Tiles sem nada de XML. Eu uso assim por odiar o digester. E também há como carregar de um banco de dados.
Veja aqui: http://tiles.apache.org/framework/tutorial/configuration.html (onde diz: Pure Java configuration) e http://tiles.apache.org/framework/how-to/definitions-db.html.
Tiles é muito bom, pois posso usar meus JSPX normalmente. E a cada tela, faço ele herdar de outra, e por aí vai. Fica show de bola.
Claro que se vocês verem apenas aqueles exemplos xoxos que têm no site, aí a gente até perde o gosto… mas usando as features avançadas dele, realmente os sites ficam muito bons.[/quote]
Oi Otavio,
Já usei e uso o tiles sem (ou com o mínimo possível de) xml. Mas o tiles tem muitos problemas. É burocrático, estimula o uso com xml (já que a documentação para fazê-lo sem é quase inexistente), adicionaram só agora o que eles chamam de “anonymous nested definitions”. É muito complicado ou chato fazer coisas simples com ele. Eu tentei usá-lo, mas não dá mais.
Estou criando um framework de templates que é baseado em orientação a objetos. Ou seja, um template seria um objeto que pode herdar características de outros, pode definir e sobrescrever conteúdos (análogos a métodos), pode definir e sobrescrever atributos, pode alterar a ordem de execução default dos conteúdos, pode ter uma classe “view helper” para executar alguma lógica de apresentação, e mais algumas coisas. O objetivo é poder criar componentes facilmente com ele.
Os conteúdos podem especificar parâmetros, que ficam disponíveis somente ao conteúdo específico, na forma de atributos em um contexto definido (page, request, etc.). Estou usando o groovy com expression language para as tags, o que dá uma flexiibilidade muito legal. É possível passar uma lista como parâmetro para um conteúdo da seguinte forma:
<jot:insert extends="/expressions/simpleGroovyExpressionParamTagTemplate.jsp">
<jot:param content="areaMsg" name="nums" value="$g{ [1, 2, 3] }" />
</jot:insert>
E então o conteúdo “areaMsg” do template poderá usar a parâmetro “nums” normalmente. Outros conteúdos do mesmo template podem usar parâmetros de mesmo nome, já que os parâmetros são vistos somente dentro de um conteúdo.
Está ficando legal, mas preciso terminar. O projeto tem testes funcionais automatizados, e uns poucos testes unitários. Devido a uma limitação da api de jsp’s, vou precisar fazer um refactoring grande no projeto, e pra isso vou ter que criar uns testes unitários antes, durante, e depois.
Já tem muita coisa pronta, e quando eu terminar eu posto aqui.