JSF PrimeFaces: как сделать, чтобы h: inputText выглядел как виджет PrimeFaces?

#java #html #css #jsf #primefaces

#java #HTML #css #jsf #primefaces

Вопрос:

Я использую PrimeFaces 2.2.1. У меня есть формы JSF с комбинацией обычных виджетов (таких как h: inputText, h: selectOneMenu, h: selectBooleanCheckbox и так далее) и виджетов PrimeFaces (таких как p: calendar и так далее).

Виджеты PrimeFaces имеют приятный скин / тему, обычные виджеты отображаются как обычные HTML-виджеты.

Есть ли простой способ получить визуализацию виджета, отличного от PrimeFaces, с использованием обложки / темы PrimeFaces?

Спасибо! роб

[PS. Я заметил, что в PrimeFaces 3.0 будет p: inputText и так далее, но он еще не выпущен. 🙁 ]

Комментарии:

1. Primefaces 3.0 M1 отсутствует. primefaces.org/downloads.html И вы всегда можете создать версию моментального снимка, если хотите расширить возможности.

Ответ №1:

p: inputText находится в PrimeFaces 2.2

http://www.primefaces.org/showcase/ui/inputText.jsf

Ответ №2:

У вас должен быть CSS, разработанный для ваших виджетов, отличных от jsf, и применять его условно.

Обновить

Предположим, что существует элемент управления календарем, отличный от jsf (т. Е. компонент, на который изменение обложки primefaces не повлияет)

Теперь вы можете использовать некоторый компонент в сеансе для хранения текущего оформления. например, скажем, natural_orange теперь вы можете создать css для своего компонента, скажем natural_orange_calendar.css , и применить его следующим образом

 <your component css="#{skinManager.currentSkin}_calendar.css">
  

Комментарии:

1. Спасибо. Есть ли шанс, что вы могли бы уточнить или привести мне простой пример?

Ответ №3:

Посмотрите на HTML-вывод вашей страницы jsf. Узнайте, как визуализируются виджеты primefaces и какие классы стиля css они используют.

Primefaces использует пользовательский интерфейс jQuery, поэтому имена классов обычно начинаются с ui-…. Используйте те же классы для ваших виджетов, отличных от primefaces.

Пример из одного из моих проектов. Этот h:dataTable заголовок выглядит как p:dataTable :

 <h:column headerClass="ui-widget-header ui-widget-content ui-state-default">