Ik ben bezig met onderhoud aan/refactoring van een oude webapplicatie, die _nogal_ ranzig is opgezet. Het bestaat uit pak 'm beet tweehonderd JSP-pagina's, die in een vrij arbitraire structuur onder de web-dir zijn geplaatst. Versimpeld voorbeeld:
/een.jsp
/aaa/twee.jsp
/aaa/bbb/drie.jsp
/aaa/bbb/ccc/vier.jsp
Daarnaast is er in de web-dir een subdir 'images' met plaatjes die in de te genereren HTML worden gebruikt, bijvoorbeeld:
/images/plaatje.png
Momenteel wordt vanuit elke individuele JSP met een net-niet-helemaal-hetzelfde-gecopypaste-code het plaatje relatief opgenomen. Daarmee bedoel ik dat de HTML die uit een.jsp komt er zo uitziet:
Omdat een heleboel code-snippets in elke JSP hetzelfde zouden moeten zijn, ben ik bezig om een taglib te maken teneinde de code-footprint van de applicatie te ruduceren en hierdoor de onderhoudbaarheid te vergroten. Hierin komt ook een tag die de HTML om het plaatje te includen genereert. Mijn probleem is nu, hoe ik vanuit één JSP-tag aangeroepen vanuit een.jsp, twee.jsp, drie.jsp òf vier.jsp op een generieke manier het relatieve pad naar plaatje.png kan bepalen.
Om alvast alle replies in de trant van 'waarom adresseer je het plaatje niet absoluut?' te voorkomen: dit gaat gegarandeerd problemen opleveren omdat onze klant een obscuur beveiligings- en authenicatiemechanisme hanteert voor de applicatieserver dat eventueel iets kan tussenvoegen tussen servername en contextpath. Hier is helemaal niets aan te veranderen.
Mijn enige idee tot nu toe om dit op te lossen is door het absolute pad met een method uit javax.servlet.http.HttpServletRequest op te vragen en vervolgens met String-functies hieruit het absolute pad te destilleren, maar dat lijkt me niet zeer robuust en omslachtig. Dit probleem is vast wel eens eerder opgelost, alleen kan ik de oplossing niet vinden. Wie weet hoe ik dit moet doen of waar ik (beter) moet zoeken?
/een.jsp
/aaa/twee.jsp
/aaa/bbb/drie.jsp
/aaa/bbb/ccc/vier.jsp
Daarnaast is er in de web-dir een subdir 'images' met plaatjes die in de te genereren HTML worden gebruikt, bijvoorbeeld:
/images/plaatje.png
Momenteel wordt vanuit elke individuele JSP met een net-niet-helemaal-hetzelfde-gecopypaste-code het plaatje relatief opgenomen. Daarmee bedoel ik dat de HTML die uit een.jsp komt er zo uitziet:
HTML:
en de HTML die uit drie.jsp komt er alsvolgt uitziet:1
| [img]"images/plaatje.png"[/img] |
HTML:
Wat er uit twee.jsp en vier.jsp kunt kunnen jullie nu zelf wel bedenken 1
| [img]"../../images/plaatje.png"[/img] |
Omdat een heleboel code-snippets in elke JSP hetzelfde zouden moeten zijn, ben ik bezig om een taglib te maken teneinde de code-footprint van de applicatie te ruduceren en hierdoor de onderhoudbaarheid te vergroten. Hierin komt ook een tag die de HTML om het plaatje te includen genereert. Mijn probleem is nu, hoe ik vanuit één JSP-tag aangeroepen vanuit een.jsp, twee.jsp, drie.jsp òf vier.jsp op een generieke manier het relatieve pad naar plaatje.png kan bepalen.
Om alvast alle replies in de trant van 'waarom adresseer je het plaatje niet absoluut?' te voorkomen: dit gaat gegarandeerd problemen opleveren omdat onze klant een obscuur beveiligings- en authenicatiemechanisme hanteert voor de applicatieserver dat eventueel iets kan tussenvoegen tussen servername en contextpath. Hier is helemaal niets aan te veranderen.
Mijn enige idee tot nu toe om dit op te lossen is door het absolute pad met een method uit javax.servlet.http.HttpServletRequest op te vragen en vervolgens met String-functies hieruit het absolute pad te destilleren, maar dat lijkt me niet zeer robuust en omslachtig. Dit probleem is vast wel eens eerder opgelost, alleen kan ik de oplossing niet vinden. Wie weet hoe ik dit moet doen of waar ik (beter) moet zoeken?