Estou prestes a escolher uma forma de organizar minha visualização (com spring-mvc, mas isso não deve importar muito)
Existem 6 opções, tanto quanto vejo (embora não sejam mutuamente exclusivas):
- Azulejos
- Sitemesh
- Freemarker
- Velocidade
<jsp:include>
<%@ include file="..">
Ladrilhos e Sitemesh podem ser agrupados; assim como Freemarker e Velocity . Qual dentro de cada grupo usar não é uma questão para esta discussão, há questões e discussões suficientes sobre isso.
Esta é uma leitura interessante , mas não consegue me convencer a usar tiles.
Minha pergunta é - o que esses frameworks oferecem que não pode ser feito corretamente com <@ include file="..">
e JSTL. Pontos principais (alguns retirados do artigo):
Incluindo partes das páginas, como cabeçalho e rodapé - não há diferença entre:
<%@ include file="header.jsp" %>
e
<tiles:insert page="header.jsp" />
Definir parâmetros no cabeçalho - como título, meta tags, etc. Isso é muito importante, especialmente do ponto de vista de SEO. Com as opções de modelos, você pode simplesmente definir um espaço reservado que cada página deve definir. Mas então você pode em jsp com JSTL , usando
<c:set>
(na página de inclusão) e<c:out>
(na página incluída)Reorganização do layout - se você deseja mover a localização atual acima do menu ou a caixa de login acima de outro painel lateral. Se as inclusões de página (com jsp) não estiverem bem organizadas, talvez seja necessário alterar todas as páginas nesses casos. Mas se seu layout não for excessivamente complexo e você colocar as coisas comuns no cabeçalho / rodapé, não há nada com que se preocupar.
Acoplamento entre os componentes comuns e o conteúdo específico - não encontro um problema com isso. Se você quiser reutilizar algum fragmento, mova-o para uma página que não inclua nenhum cabeçalho / rodapé e inclua-o sempre que necessário.
Eficiência -
<%@ include file="file.jsp" %>
é mais eficiente do que qualquer outra coisa, porque é compilado uma vez. Todas as outras opções são analisadas / executadas muitas vezes.Complexidade - todas as soluções não jsp requerem arquivos xml adicionais, inclusões adicionais, configurações de pré-processador, etc. Esta é uma curva de aprendizado e apresenta mais pontos potenciais de falha. Além disso, torna o suporte e as alterações mais tediosos - você precisa verificar uma série de arquivos / configurações para entender o que está acontecendo.
Marcadores de posição - a velocidade / marcador livre fornece algo mais do que JSTL? Em JSTL, você coloca o espaço reservado e usa o modelo (colocado no escopo da solicitação ou da sessão, pelos controladores) para preencher esses espaços reservados.
Portanto, convença-me de que devo usar qualquer uma das estruturas acima em vez de / além do JSP simples.