Jsp пользовательский тег с корпусом JSF
-
26-10-2019 - |
Вопрос
Я связываюсь, чтобы создать свой собственный механизм шаблона для сайта. Я сделал 2 пользовательских тега с названием «Templateinsert» и «Template для», который использует их так:
<prefix:insert templateFile="someFile>
<prefix:for name="body">
some content here
</prefix:for>
other prefix:for tags...
</prefix:insert>
Это работает отлично, если в вашем «контенте» нет тегов JSF. Сервер, кажется, не проанализирует их. Кто -нибудь знает, как я могу это исправить?
ваше здоровье!
Решение
Это одна из самых причин, по которой JSP был сменен Facelets в соответствии с JSF 2.0 / Java EE 6. JSP предлагает очень небольшие возможности шаблона. Однако вы можете использовать Facelets 1.x на JSF 1.x, если вы установите отдельно в соответствии с их докбук.
Facelets предлагает именно ваше функциональное требование, уже выходящее на коробку. Пример:
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>
Я бы сказал, что выберите Facelets в качестве технологии JSF View вместо того, чтобы заново изобретать ее на основе JSP.