2015-07-30 19 views
6

Qual è la procedura migliore per i componenti jsp riutilizzabili nel codice? Scrivere un tag personalizzato o utilizzare il tag <jsp:include>?Best practice: tag jsp personalizzato o tag include?

Quali circostanze detterebbe l'uso dell'uno o dell'altro?

Caso di utilizzo: Sto cercando di rifattorizzare parte di un'applicazione e vorrei prendere una decisione informata su come suddividere l'html in parti riutilizzabili. Attualmente sto usando un tag personalizzato per creare un layout che include l'intestazione e il piè di pagina, la testa e le dipendenze del codice HTML. Ma non sono sicuro del modo migliore per includere una parte di html statico riutilizzata nell'app.

+0

Da quello che ho sentito, le JSP sono cadute in disgrazia a causa delle difficoltà nel creare componenti riutilizzabili. Non sono molto più semplici di quanto include i vecchi php include o shtml. Alcune persone parlano di JSF, ma la mia esperienza limitata con quelle è che c'è un'alta curva di apprendimento .... Non sono sicuro di una buona soluzione architettonica. Gli SPG sono piuttosto indolori, anche se sfortunatamente vanno d'accordo con Grails che non è indolore. – CStepnitz

+0

Purtroppo, per ora sono bloccato con questa architettura. – Josie

risposta

4

Ci sono davvero una serie di ragioni per andare con l'una o l'altra da un punto di vista dell'organizzazione di base di codice.

Un motivo principale per creare una libreria di tag invece di utilizzare il tag jsp:include consiste nel fornire parametri e valori che potrebbero influenzare il markup generato. Supponiamo che tu voglia passare un nome utente per apparire nell'intestazione della pagina che hai già passato preziosi cicli di recupero. Inoltre, se hai una logica particolarmente complicata (ad esempio qualcosa di più di condizionali o loop), una libreria di tag è la strada da percorrere. Nessuno vuole un casino di spaghetti code seduti in una JSP.

Direi che una libreria di tag che non accetta parametri che produce sempre un'uscita statica è funzionalmente uguale a equivalente all'utilizzo di jsp:include.

Il tuo caso d'uso specifico riguarda un markup in qualche modo correlato. Hai un'intestazione di pagina e un piè di pagina. Potrebbe avere senso implementare questo come tag diversi all'interno della stessa classe Tag Library, per mantenere questi frammenti correlati nella stessa posizione.

D'altra parte, incapsulare l'HTML all'interno di una libreria di tag riduce la manutenibilità per i non sviluppatori. Supponiamo che tu abbia un grafico su un progetto che non conosce un lease di Java ma che desidera modificare il markup. Certo, potrebbero essere in grado di guadare attraverso una classe di tag library e capire cosa devono cambiare; forse no!

Per riassumere, se pensi di poter passare i parametri o se disponi di una logica aziendale, è la Libreria di tag fino in fondo. Se si tratta solo di contenuto statico e/o si desidera che i non sviluppatori contribuiscano alla modifica, è possibile utilizzare semplicemente uno .jsp incluso.

Problemi correlati