2013-03-23 6 views
2

У меня есть webapp, работающий на Glassfish 3.1.2.2, который использует JSF 2.1 (Mojarra) и PrettyFaces 3.3.3, чтобы облегчить задачу интеграции «довольно» REST- стиль URL с моим приложением.Довольно URL-адреса для ресурсов JSF (CSS, JS, изображения) с использованием PrettyFaces

Однако, глядя на сгенерированный код html, я вижу довольно «уродливые» длинные пути к моим ресурсам приложений. Как это:

<script type="text/javascript" src="/HelloWorld/faces/javax.faces.resource/js/jquery-1.9.1.min.js"> 

В частности, faces/javax.faces.resource/ часть болит глаз. Следуя основной идее PrettyFaces, я хотел бы удалить эту часть.

Возможно ли перехватить создание этих URL-адресов и может ли PrettyFaces помочь мне с этим?

Я использую <h:outputScript name="js/jquery-1.9.1.min.js" />, <h:outputStylesheet name="css/app.css" /> и <h:graphicImage name="img/logo.png" />, чтобы включить ссылки ресурсов в моем JSF-сервлете.

Редактировать: Я думаю, мне нужно сделать две вещи?

  • 1: Запрос карты, как /img/*, к их фактическому местоположению /faces/javax.faces.resource/img/*.
  • Два: подключиться к генерации URL-адреса элемента <h:graphicImage /> (и других).

Я был бы рад, если бы вы могли дать мне несколько указаний о том, с чего начать. Я довольно новичок в JSF.

Большое спасибо! :)

+1

Какова мотивация этого требования? –

+0

Я знаю, что вы имеете в виду @Luiggi. Это скорее «мягкое» требование. Я бы хотел, чтобы мои URL-адреса были хороши, даже те, которые указывали на ресурсы. Я думаю, что это '/ HelloWorld/img/logo.png' или'/HelloWorld/resources/img/logo.png' выглядит лучше, чем '/ HelloWorld/faces/javax.faces.resource/img/logo.png'. – RamboNo5

+2

Вы можете найти это полезным: http://stackoverflow.com/questions/14963756/prevent-suffix-from-being-added-to-resources-when-page-loads/ – BalusC

ответ

2

К сожалению, очень сложно реализовать такое требование с помощью PrettyFaces. Это одна из причин, по которой мы решили запустить Rewrite, который является преемником PrettyFaces.

С переписыванием очень легко сделать что-то подобное. Вам просто нужно добавить правило Join, которое переводит путь, который вы хотите увидеть, в путь, который использует ваше приложение в настоящее время.

Ваше требование может быть реализовано что-то вроде этого:

.addRule(Join.path("/js/{file}").to("/faces/javax.faces.resource/js/{file}")) 

Легко, не так ли? Если вы хотите узнать больше о Rewrite, посмотрите на examples configurations. Если у вас возникли проблемы, посмотрите на forums.

Rewrite 2.0.0.Final, который будет выпущен очень скоро, приносит некоторые приятные улучшения. Особенно обратный модуль совместимости для PrettyFaces, который позволяет повторно использовать вашу текущую конфигурацию PrettyFaces, если вы хотите заменить PrettyFaces на Rewrite.

+0

Спасибо, я буду глубже взглянуть на Rewrite. Это выглядит интересно! – RamboNo5

 Смежные вопросы

  • Нет связанных вопросов^_^