Импорт CSS в теги JSP - PullRequest
       10

Импорт CSS в теги JSP

2 голосов
/ 08 декабря 2011

Какими способами (если есть) можно связать или импортировать таблицу стилей из тега JSP, называемого в ? Было бы здорово, если бы я мог инкапсулировать весь необходимый импорт в тег JSP.

Текущее состояние

index.jsp:

<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="x" tagdir="/WEB-INF/tags" %>
<html>
    <head>
        <!-- we have to know what css file somecontent uses and include it here -->
        <!-- the tag below prints <link rel="/somecontent.css"... /> but makes sure this url is only included once -->
        <x:requireOnce loc="/somecontent.css" type="css" />
    </head>
    <body>
        <x:somecontent />
    </body>
</html>

Цель

index.jsp:

<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="x" tagdir="/WEB-INF/tags" %>
<html>
    <head>
        <%-- nothing for somecontent tag here --%>
    </head>
    <body>
        <x:somecontent />
        ...
    </body>
</html>

somecontent.tag:

<%@ tag description="some independent content" %>
<%@ taglib prefix="x" tagdir="/WEB-INF/tags" %>
<%-- the inline attribute will indicate that it is in the body and shouldn't use <link> which won't work here --%>
<x:requireOnce loc="/somecontent.css" type="css" inline="true" />
<%-- this will print <script type="text/javascript" src="/somecontent.js" ...></script> --%>
<x:requireOnce loc="/somecontent.js" type="js" />
...

Есть ли способ сохранить ссылку на позицию в теге head внутри JspWriter и вставлять туда содержимое, когда это необходимо, т.е. новые теги ссылки?

В идеале я не хочу вставлять содержимое таблицы стилей или использовать javascript для включения таблицы стилей. Надеюсь, есть какой-то способ с @import, или с магией JSP ... Мысли?

1 Ответ

1 голос
/ 08 декабря 2011

Вы можете сделать что-то в соответствии с тем, что делает SiteMesh.

Каждый тег requireOnce просто помещает файл для ссылки в список файлов, сохраненных в атрибуте запроса. Фильтр сервлета будет буферизовать весь ответ и переписать его после завершения, переписав заголовок, чтобы включить все ссылки.

...