JSF rowStyleClass如何获取当前日期

时间:2014-10-24 10:36:11

标签: jsf primefaces

我正在使用JSFPrimefaces。我想根据条件显示具有不同背景颜色的datatable的一些行。这种情况是,如果date()大于或等于当前日期,则必须使用CSS文件中指定的颜色显示行。如何获得当前日期

这是Facelet

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

这是CSS

.colored {
background-color: yellow;
}

我在WEB-INF中创建了一个faces-config.xml文件,代码如下:

<?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>

,但是当我运行Web应用程序时,它给了我一个java.lang.NullPointerException。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

最基本的解决方案是在bean中创建一个变量并使用@PostConstruct注释启动它:

private Date currentDate;

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

//Getter and Setters...

然后您可以在视图中访问它:#{yourBean.currentDate}

或者你可以使用Omnifaces&#39;默认实现#{now}

答案 1 :(得分:0)

Thrax的建议是对的,但并不完整。 如果您想使用Primefaces或JSF获取日期,则必须设置如下代码:

首先,我们将创建一个java类,并调用currentDate或getMyDate,无论您如何命名它。然后粘贴Thrax构造。另外,您必须将@ManagedBean upper添加到您的课程中。

我们添加ManagedBean以便在JSF中将其称为类。 现在,如果你去你的JSF并输入#{curr ....}(ctrl + space),你将能够看到你的类是一个bean,但是当你尝试调用属性currentDate时它就不会出现了。所以你需要做的就是创建Get和Set方法。 最后,您将在init构造函数中调用SetCurrentDate方法,为其提供变量currentDate作为参数,就是这样。你只需要在你需要的JSF中再次调用这个属性,这次它会出现,它将显示在你的页面中。

这个课你看起来像这样

currentdate