Я могу получить url текущей страницы в jsf из бэкэнда, используя HttpServletRequest. Но есть ли способ получить название текущей страницы?Как получить заголовок текущей страницы в jsf
2
A
ответ
3
Нет, это невозможно. Он появляется только в цвете тега HTML <title>
в ответе HTTP, связанном с HTTP-запросом. Теоретически можно проанализировать файл вида с помощью синтаксического анализатора XML и извлечь из него элемент <title>
, но это неудобно.
Лучше сделайте это наоборот. Переменные, которые представляют интерес для контроллера, все равно принадлежат модели, а не (жестко запрограммированы) в представлении. Сделать заголовок свойство модели и отобразить его в EL так:
<title>#{page.title}</title>
Вы могли бы иметь отображение страниц на основе их URL, или лучше, их JSF вид ID, который имеет синтаксис /path/filename.xhtml
. Если вы будете держать их в Map<String, Page>
, то вы должны быть в состоянии получить заголовок страницы следующим образом
String title = pages.get(facesContext.getViewRoot().getViewId()).getTitle();
Woow спасибо большое. Это именно то, чего я хотел. Я думаю, что 3-е решение будет работать лучше для моей ситуации, поскольку я разрабатываю хлебную крошку, которую я не могу читать из модели каждый раз. – Sara
Добро пожаловать. – BalusC