tag JSP personalizzata con corpo JSF
-
26-10-2019 - |
Domanda
sto legando a creare il mio meccanismo di template per un sito. Ho fatto 2 tag personalizzati denominati "TemplateInsert" e "TemplateFor" uno di loro potrebbe usare in questo modo:
<prefix:insert templateFile="someFile>
<prefix:for name="body">
some content here
</prefix:for>
other prefix:for tags...
</prefix:insert>
Questo funziona perfettamente a meno che non ci sono tag JSF all'interno del vostro "contenuto". Server non sembra per analizzare loro. Qualcuno sa come posso risolvere questo problema?
evviva!
Soluzione
Questa è una delle ragioni per le quali pletora di JSP è stato succeduto da Facelets come per JSF 2.0 / Java EE 6. JSP offre ben poca capacità di templating. È tuttavia possibile utilizzare Facelets 1.x sul JSF 1.x se si installa separatamente come per la loro docbook .
Facelets offre esattamente la vostra esigenza funzionale già fuori dalla scatola. Un esempio:
template.xhtml
<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<head>
<title><ui:insert name="title" /></title>
</head>
<body>
<ui:insert name="body" />
</body>
</html>
page.xhtml
<ui:composition template="template.xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<ui:define name="title">Page title</ui:define>
<ui:define name="body">
<h:outputText value="JSF tags just work here." />
</ui:define>
</ui:composition>
direi, andare per Facelets come tecnologia per la vista JSF invece di reinventare una basata su JSP.