2011-10-06 10 views
1

richfaces 4.0을 사용 중이며 rich : dataTable에 일부 열 필터를 추가하고 있습니다. 이제 날짜가 포함 된 열을 필터링하므로 rich : calendar를 사용하여 테이블 내용을 필터링하고 싶습니다. 서버 측에열의 rich : calendar를 사용하여 rich : dataTable 필터링

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

, 나는 다음과 같은 코드를 추가 한 필터 클래스했습니다 :

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; 

     } 
    }; 
} 
을 그래서, 내가 찾은 예에 따라, 나는 .xhtml 페이지에 다음 코드를 추가

캘린더를 사용하여 날짜를 변경할 때 속성이 올바르지 만 마지막에 예외가 있으므로 무언가 잘못되었다는 것을 알았습니다.

11:50:54,484 GRAVE [org.richfaces.log. 컨텍스트] (http - 127.0.0.1-8080-1) 주 : rerunListTable : j_idt38 : 'Wed Oct 12 00:00:00 CEST 2011'cou 날짜로 이해할 수 없습니다. javax.faces.convert.ConverterException : main : rerunListTable : j_idt38 : 'Wed Oct 12 00:00:00 CEST 2011'을 날짜로 이해할 수 없습니다.

어디서 잘못 되었나요? 감사합니다. fil

답변

1

문제점을 발견했습니다. 나는 aodFilter 속성에 대해 잘못된 유형을 사용하고있었습니다. java.util.Date이므로 String을 사용했습니다. 올바른 유형을 사용하고 필터 논리를 추가하면 모든 것이 작동합니다. JSF가 내 자신의 시간대를 사용하지 않고도 날짜를 변환하는 것을 인식하지 못했기 때문에 약간의 문제를 해결해야합니다. 여기 f:convertDateTime displays wrong Date 제안 및 모든 감사

괜찮다고로 그런데 , 나는 web.xml 파일에 그 라인을

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

추가