2012-01-27 84 views
0

哪個「p:calendar」組件被假定爲綁定的Java類類型? (爲了實現它的轉換器)。jsf轉換器p:日曆日期

我認爲這是java.util.Date,所以我有以下幾點:

<p:calendar id="fecha" value="#{catalogoController.criterios.fecha}" 
      maxlength="10" 
      size="10" 
      locale="es" 
      pattern="dd/MM/yyyy" 
      navigator="true" 
      showOn="button" 
      showButtonPanel="true" /> 

和物業catalogoController.criterios.fechajava.util.Date

我的自定義轉換器:

@FacesConverter(forClass = java.util.Date.class) 
    public class FechaDateConverter implements Converter { 
    ... 
     public Object getAsObject(FacesContext context, UIComponent component, String value) { 
      log.info("getAsObject"); 
      ... 
     } 
    ... 
    } 

,因爲它是大我不把這裏的方法的代碼。它檢查條件並使用自定義facesmessages引發ConverterException,這是從自定義屬性文件(「msjsConversion」)中獲取的。

但它不起作用。當我輸入不正確的日期時(例如「01/032011」),我的getAsObject方法沒有被觸發(我知道,因爲它的第一條日誌行從未到達)。默認的轉換信息顯示爲facesmessage,而不是我從我的包「msjsConversion」中獲得的信息。

我認爲它沒有被觸發的原因是因爲p:calendar綁定到的Java類不是java.util.Date(這是我聲明的轉換器的類)。

所以,我檢查了,如果我宣佈我的轉換器的ID:

@FacesConverter("fechaDateConverter") 
public class FechaDateConverter implements Converter { 

,我把這個在p:calendar組件:

<f:converter converterId="fechaDateConverter" /> 

它的工作原理。

因此,任何人都知道哪一個是Java類p:calendar?這樣我可以爲我的類聲明我的轉換器,而不使用converterId?

預先感謝您。

+0

爲什麼你需要一個轉換器FO號碼:日曆值?它是一個簡單的日期http://www.primefaces.org/showcase/ui/calendarBasic.jsf < - 看看java代碼... – Daniel 2012-01-28 08:47:08

+0

我的轉換器是一個簡單的日期(請參閱我的問題)。但是,如果我將它聲明爲任何日期對象'@FacesConverter(forClass = java.util.Date.class)',它就不起作用。如果我明確聲明組件爲' ' – choquero70 2012-01-30 17:34:22

回答

1

因此,任何人都知道哪個是p:calendar的Java類?

這似乎沒有一個。

請注意,這個答案適用於primefaces 1.1,我沒有檢查以後的版本可能會有所不同。

從字符串到日期的轉換在org.primefaces.component.calendar.CalendarRenderer

的getConvertedValue方法如果已經指定一個轉換器完成(在你的電話號碼:你的頁面上使用的日曆),這將是用於轉換日期並處理可能遇到的任何錯誤。如果沒有指定轉換器,那麼該方法嘗試使用提供的模式解析日期(或者如果沒有提供模式,它將回退到使用MM/dd/yyyy的默認值)。

0

可以使用p的屬性變換器:日曆指定轉換器,無論是通過ID(例如轉換器=「fechaDateConverter」)或由豆名稱(例如轉換器=「#{fechaDateConverter}」)。

這有你需要的,如果重複對於每P缺點:歷...