Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 使用列上的rich:日历筛选rich:dataTable_Jsf 2_Richfaces - Fatal编程技术网

Jsf 2 使用列上的rich:日历筛选rich:dataTable

Jsf 2 使用列上的rich:日历筛选rich:dataTable,jsf-2,richfaces,Jsf 2,Richfaces,我正在使用RichFaces4.0,并在rich:dataTable上添加一些列过滤器。现在,由于我正在筛选一个包含日期的列,所以我想使用rich:calendar来筛选表的内容。因此,根据我找到的示例,我向.xhtml页面添加了以下代码: <rich:column filter="#{rerunFilter.aodFilterImpl}"> <f:facet name="header"> <h:outputText value="Aod R

我正在使用RichFaces4.0,并在rich:dataTable上添加一些列过滤器。现在,由于我正在筛选一个包含日期的列,所以我想使用rich:calendar来筛选表的内容。因此,根据我找到的示例,我向.xhtml页面添加了以下代码:

<rich:column filter="#{rerunFilter.aodFilterImpl}">
    <f:facet name="header">
        <h:outputText value="Aod Rerun" />
        <br/>
        <rich:calendar id="aod"
                   datePattern="yyyy-MM-dd"
                   showWeekDaysBar="false"
                   showFooter="false"
                   value="#{rerunFilter.aodFilter}"
                   popup="true">
            <a4j:ajax event="change" render="main:rerunListTable" execute="@this"/>
        </rich:calendar>
    </f:facet>
    <h:outputText value="#{item.aod}">
        <f:convertDateTime pattern="yyyy-MM-dd" />
    </h:outputText>
</rich:column>


在服务器端,我添加了filter类,其中添加了以下代码:

private String aodFilter;

public String getAodFilter() {
    return aodFilter;
}

public void setAodFilter(String aodFilter) {
    logger.info("Received "+aodFilter);
    this.aodFilter = aodFilter;
}

public Filter<?> getAodFilterImpl() {
    return new Filter<Rerun>() {
        public boolean accept(Rerun item) {
            String aod = getAodFilter();
            logger.info("Invoked with "+aod+" Item date "+item.getAod());
            return true;

        }
    };
}
私有字符串aodFilter;
公共字符串getAodFilter(){
返回AOD过滤器;
}
公共无效设置aodFilter(字符串aodFilter){
logger.info(“已接收”+aodFilter);
this.aodFilter=aodFilter;
}
公共筛选器getAodFilterImpl(){
返回新筛选器(){
公共布尔接受(重新运行项){
字符串aod=getAodFilter();
logger.info(“使用“+aod+”项目日期“+Item.getAod()调用”);
返回true;
}
};
}
当我使用日历更改日期时,我在日志中看到属性是正确的,但有一些错误,因为我在最后得到了一个异常

11:50:54484 GRAVE[org.richfaces.log.Context](http--127.0.0.1-8080-1)main:rerunesttable:j_idt38:“2011年10月12日星期三00:00:00 CEST”不能理解为日期:javax.faces.convert.ConverterException:main:rerunesttable:j_idt38:“2011年10月12日星期三00:00:00 CEST”不能理解为日期

我错在哪里? 谢谢
菲尔

我发现了问题!我对aodFilter属性使用了错误的类型,它是java.util.Date,我以前使用了字符串。 使用正确的类型并添加过滤器逻辑,一切正常。 请注意,我必须解决另一个小问题,因为我不知道JSF在转换日期时没有使用我自己的时区。 顺便说一下,我加上了这些行

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

javax.faces.DATETIMECONVERTER\默认\时区\是\系统\时区
真的
按照这里的建议访问web.xml,一切正常
谢谢

我找到了问题!我对aodFilter属性使用了错误的类型,它是java.util.Date,我以前使用了字符串。 使用正确的类型并添加过滤器逻辑,一切正常。 请注意,我必须解决另一个小问题,因为我不知道JSF在转换日期时没有使用我自己的时区。 顺便说一下,我加上了这些行

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

javax.faces.DATETIMECONVERTER\默认\时区\是\系统\时区
真的
按照这里的建议访问web.xml,一切正常 谢谢