Diversi layout e i18n nell'applicazione JSP
-
02-07-2019 - |
Domanda
Ho un sacco di file JSP e back-end in Tomcat. Ho 3 diverse versioni di JSP con la stessa logica all'interno ma con layout diversi. Quindi se cambio un po 'di logica ho tre file JSP da correggere.
Qual è la soluzione adeguata per un tale scenario? Ho pensato a un po 'di stack XML e XSLT: il backend fornisce solo dati in XML e per ogni layout ho XSLT che fa un po' di magia.
Immagina di dover fornire stackoverflow in varie lingue in JSP. Logica uguale ma layout diverso.
Potresti indicarmi una direzione?
Soluzione
Ulteriori informazioni su MVC (Model View Controller) e sull'idea che JSP dovrebbe essere la parte View di esso e non dovrebbe contenere alcuna logica. La logica appartiene a una classe Model.
Altri suggerimenti
Questo di solito viene risolto usando un motore di template: crei frammenti di pagina più piccoli e poi dichiari al motore di template che certe viste dovrebbero consistere in queste parti, messe insieme in un certo modo.
I riquadri Struts sono il classico esempio nel mondo Java, ma stanno diventando sempre più vecchi e crudi rispetto ai più moderni quadri in Java e in altre lingue. Tapestry e Wicket sono altri due moderni (non li ho usati però).
Tuttavia, solo per 3 pagine l'applicazione di un intero framework Web è probabilmente eccessiva, ma se il tuo sito cresce ...
Con il semplice vecchio JSP senza alcun tipo di fama:
1) Utilizzare i controller per eseguire l'elaborazione e utilizzare solo jsp per visualizzare i dati
2) Usa jsp include le direttive per includere intestazione, navigazione, menu, piè di pagina e altri elementi comuni / condivisi necessari per tutti quei layout.
o / e:
Usa quanto segue in web.xml
<jsp-property-group>
<url-pattern>/customers/*</url-pattern>
<include-prelude>/shared/layout/_layout_customers_top.jsp</include-prelude>
<include-coda>/shared/layout/_layout_customers_bottom.jsp</include-coda>
</jsp-property-group>
Il pattern url determina quali jsps ottengono quali frammenti jsp (parziali in Ruby on Rails) attaccati in alto / in basso.
Dai un'occhiata a Piastrelle.
Questo è un dominio problematico molto classico e ci sono molti concetti e framework là fuori che stanno cercando di affrontare questo problema (framework MVC come Struts e JSF, SessionBeans per citarne solo). Come ho il sospetto che tu non sia davvero un'impresa "evangelista" di Java Ti darò 2 semplici consigli.
-
Ovviamente hai un sacco di codice ridondante nei tuoi JSP. Estrai questo codice in " real " Classi Java e utilizzali su tutti i tuoi JSP. In questo modo sarai in grado di modificare la logica aziendale in un unico posto e la ridondanza sarà meno un problema.
-
Dai un'occhiata a Cascading Style Sheets (CSS). Questo è il modo più avanzato per impaginare le pagine web. Potresti anche non aver bisogno di JSP diversi per layout diversi, se hai HTML + CSS ben progettato.
Saluti