Reuso de Páginas

Vários projetos meus compartilham um conjunto de páginas de cadastros gerais (países, estados, cidades, bairros, nacionaliaddes, profissões etc.). Atualmente gerencio isso replicando as páginas entre as aplicações. Porém, gostaria de adotar uma forma mais produtiva e elegante. Como vocês tratam isso?

você esta falando de aplicação web certo? você pode usar engines de templates, de uma olhada no sitemesh e tambem no apache tiles 2

a idéia é você criar uma diagramação do seu site, assim ele poderia ser decomposto em menu, topo, rodapé, etc…

t+

Tiles funciona muito bem para vc dividir a sua tela em pequenas partes independentes. Facelets também é uma ótima ideia para isso.
Mas, se vc precisa, que nem eu já precisei, reaproveitar a tela inteira, mas colocar uma lógica bem diferente em cada uma, eu aconselho vc dar uma pesquisada em algum esquema de workflow… Sei que não é essa a total intensão deles, mas eles normalmente implementam umas coisas assim.
No meu antigo projeto, numa outra empresa ainda, nós tivemos que implementar uma coisa dessas, isto pq o nosso ‘arquiteto’ não planejou como reaproveitar páginas dentro do projeto ¬¬
O que nós fazíamos, naquele caso, era criar uma interface padrão para cada tela reaproveitada, com as funções básicas da tela, e cada ManagedBean acessava somente essa interface. Como era um esquema de wizard, nós instanciavamos cada lógica na chamada de cada wizard, e a arptir dai ficavamos brincando de colocar e tirar esse objeto da sessão.
Mais ou menos assim:

  • Usuário clicou no item de menu;
    • Instancia objeto referente a lógica daquele item de menu e joga na sessão;
  • Chama a primeira página(que pode ter sido reaproveitada por algum outra caso de uso);
    • O MBean daquela tela, no seu construtor, vai na sessão e retira o objeto de lógica;
  • A tela carrega todas as propriedades necessárias através do MBean;
    • O MBean delega quase tudo para o objeto que contém a lógica. A única coisa que o MBean tinha que cuidar era o tratamento dos parâmetros;
  • Quando precisar navegar para a próxima página, o MBean joga o objeto de lógica na sessão, e a próxima tela que se preocupe em retirar o objeto da sessão;

Assim nós praticamente criamos um contexto de conversão(o JBoss Seam tem esse contexto e carinhosamente chama ele de Conversation), conseguimos isolar o MBean da lógica e assim pudemos reaproveitar as telas entre vários Casos de Uso, já que cada MBean era agnóstico quanto a sua real lógica.

Isso é só a minha expriência com isso. POR FAVOR, não use ela assim.
Ela é horrível, pq já existem muitos componentes que fazem isso por vc. Só quis demonstrar pra vc oq pode ser feito, em último caso.