2014-10-24 4 views
0

Я работаю с JSF и Primefaces. Я хочу показать несколько строк datatable с другим цветом фона в зависимости от состояния. Это условие заключается в том, что дата() больше или равна текущей дате, когда строки должны отображаться с цветом, указанным в файле CSS. Как я могу получить текущую дату?JSF rowStyleClass как получить текущую дату

Это Facelet

<p:dataTable id="dataTableCitizens" rowStyleClass="#{item.dateLastDate ge currentDate ? 'colored' : null}" value="#{citizensManagedBean.listCitizens}" var="item"> 

Это CSS

.colored { 
background-color: yellow; 
} 

Я создал лица-config.xml файл в WEB-INF со следующим кодом:

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="2.0" 
       xmlns="http://java.sun.com/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"> 

    <managed-bean> 
    <managed-bean-name>currentDate</managed-bean-name> 
    <managed-bean-class>java.util.Date</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

, но когда я запускаю веб-приложение, он дает мне java.lang.NullPointerException. Что я делаю неправильно?

+0

http://stackoverflow.com/a/9177715/4074715 –

+0

Я создал лица-config.xml файл в WEB-INF, но он выходит из строя – josh23

ответ

1

Самое основное решение создать переменную в вашем боба и начать его с @PostConstruct аннотацию:

private Date currentDate; 

@PostConstruct 
public void init() { 
    currentDate = new Date(); 
} 

//Getter and Setters... 

Тогда вы можете получить к нему доступ на ваш взгляд: #{yourBean.currentDate}

Или вы можете использовать Omnifaces 'реализация по умолчанию #{now}.

+0

правильно, но этот компонент лучше использовать в приложении, или вокруг будет много экземпляров currentDate. –

0

Что предлагает Thrax правильно, но не полностью. Если вы хотите иметь дату с использованием Primefaces или JSF, вам нужно будет установить этот код следующим образом:

Во-первых, мы собираемся создать класс java и вызвать currentDate или getMyDate, как бы вы его ни называли , Затем вставьте конструкцию Thrax. Кроме того, вам придется добавить его @ManagedBean в верхний класс.

Мы добавили ManagedBean, чтобы назвать его классом в JSF. Теперь, если вы перейдете к ур JSF и введите # {curr ....} (ctrl + space), вы сможете увидеть свой класс bean-компонентом, но при попытке вызвать атрибут currentDate он не появится. Так что вам нужно просто создать методы Get и Set. Наконец, вы вызовете метод SetCurrentDate в конструкторе init, указав ему переменную currentDate как параметр, и это все. Вам просто нужно будет снова вызвать этот атрибут в JSF, который вам нужен, на этот раз он появится, и он будет показан на вашей странице.

Этот класс вы выглядеть

currentdate

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