Модификация Spring Url таким образом, как - PullRequest
0 голосов
/ 04 ноября 2011

Я ищу способ, как изменить URL в реализации тега spring:url, без изменения jsps.

Краткое введение, объясняющее, что я хочу сделать:

У меня есть приложение, которое интенсивно использует <spring:url в jsp.

Вещи вроде этого:

<spring:url value="/resources/style/default.css" var="css_url" />
<link rel="stylesheet" type="text/css" media="screen" href="${css_url}">
    <!-- required for FF3 and Opera -->
</link>

, но то же самое для изображений, ...

Теперь я хочу немного изменить отображение папки ресурсов, чтобы она включала текущую версию.(Таким образом, для версии 1.0.1 /resources/style/default.css становится /resources1.0.1/style/default.css) (, прежде чем кто-то спросит: причина кеширования )

Конечно, я не хочу изменять все spring:urlтеги во всех jsps, когда я выпускаю новую версию.Поэтому моей первой идеей было добавить новую переменную ModelMap (VERSION), а затем изменить все теги URL один раз (<spring:url value="/resources${VERSION}/style/default.css" var="css_url" />).- Это работает.

Но я ищу лучший способ, например, способ "внедрить" версию в реализацию тега spring:url.Так что сам тег заменит все /resources/ на /resources1.0.1/ (или что бы то ни было текущей версией).Поэтому я спрашиваю, есть ли у кого-нибудь идея, как добавить код в реализацию тега spring:url, которая изменяет URL-адреса?

( Я не хочу использоватьчто-то вроде Tuckey UrlRewriteFilter или хотите изменить отображение, я действительно хочу изменить вывод spring: url )

Ответы [ 2 ]

0 голосов
/ 05 ноября 2011

Вы можете использовать фильтры для сопоставления URL-адресов с / resources * и затем изменить запрос.

0 голосов
/ 04 ноября 2011

Я бы либо имел свойство контекста приложения и использовал бы обычный JSP EL, либо создал бы собственный тег (например, <app:versionedUrl>), который инкапсулировал бы любую логику, которую вы хотите использовать.

Сохраняя свойство вВ контексте вы можете играть в некоторые игры с медленной прокаткой новой версии, разрешить конкретным пользователям / группам и т. д.«заморозить» версию и т. д., если это что-то интересное для вас.

Другой вариант - создать сопоставление для файлов CSS, содержащих идентификатор версии, и либо перенаправить на реальный ресурс или поток.вернуться к содержанию версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...