2013-05-15 56 views
0

我有一個自定義轉換器,它擴展了DateTimeConverter,我已經在faces-config.xml中註冊了java.util.Date類。基本上,新轉換器所做的就是添加更多描述性消息並將其傳遞到當前上下文,以便它可以顯示在適當的jspf中。JSF自定義轉換器並不總是使用

對於屏幕上的一個日期字段,我正在測試,一切正常;對於另外兩個,我的getAsObject()方法永遠不會被調用。但是,我添加了一個用於調試的h:messages標記,另外兩個日期字段引發了轉換錯誤,所以它們仍然試圖在某處進行轉換。

我可以找到三個領域之間沒有區別;它們都使用相同的styleclasses,並且每個都由java.util.Date支持。我認爲發生的是第二個使用默認轉換器,但我不知道爲什麼。這些字段都是動態創建的,所以我不能在jsp中添加標籤,但我確實嘗試了在創建組件的實用類中明確設置轉換器,但遇到同樣的問題。

任何想法我應該找什麼?我覺得這是小而明顯的東西,但我沒有看到它。

編輯: 真的沒有那麼多與我可以輕鬆複製+粘貼的部分進行。在JSP中,有一個DataTable(在上工作):

<h:dataTable id="myTableID" binding="#{myBackingbean.myTable}" value="#{myBackingbean.myInfoArray}" 
    rowClasses="#{myBackingbean.myRowClasses}" columnClasses="field-first,field-last" var="varDetails" border="0" cellpadding="2" cellspacing="0" 
    headerClass="sub-heading ui-widget-header" width="98%"> 
</h:dataTable> 

凡myTable的是HtmlDataTable和myInfoArray是我們班的一個鏈表。

另外兩個:

<h:dataTable id="myTableID2" binding="#{myBackingbean.myTable2}" value="#myBackingbean.myInfoArray2}" 
    rowClasses="#{myBackingbean.myRowClasses2}" columnClasses="field-first,field-last" var="varDetails2" border="0" cellpadding="2" cellspacing="0" 
    headerClass="sub-heading" styleClass="" width="100%"> 
</h:dataTable> 

在我的實用工具類:

HtmlInputText dateInput = new HtmlInputText(); 
dateInput.setId("dynamic_Date"); 
ValueBinding binding_value_3_3 = getApplication().createValueBinding("#{XXXXXXXX.dtValue}"); 
dateInput.setValueBinding("value", binding_value_3_3); 
ValueBinding bindingCol_3_4 = getApplication().createValueBinding("#{XXXXXXXX.date}"); 
dateInput.setValueBinding("rendered", bindingCol_3_4); 
ValueBinding bindingCol_date = getApplication().createValueBinding("#{XXXXXXXX.disabled}"); 
dateInput.setValueBinding("disabled", bindingCol_date); 

HtmlInputText dateTimeInput = new HtmlInputText(); 
dateTimeInput.setId("dynamic_DateTime"); 
ValueBinding binding_value_11_3 = getApplication().createValueBinding("#{XXXXXXXX.strValue}"); 
dateTimeInput.setValueBinding("value", binding_value_11_3); 
ValueBinding bindingCol_11_4 = getApplication().createValueBinding("#{XXXXXXXX.dateTime}"); 
dateTimeInput.setValueBinding("rendered", bindingCol_11_4); 
ValueBinding bindingCol_dateTimeInput = getApplication().createValueBinding("#{XXXXXXXX.disabled}"); 
dateTimeInput.setValueBinding("disabled", bindingCol_dateTimeInput); 

column1.getChildren().add(dateInput); 
column1.getChildren().add(dateTimeInput); 

其中xxxxxxxx或者是varDetails或varDetails2。

+1

至少發佈JSF代碼,以便重現問題並提供解決方案。 –

回答

0

我不確定是什麼問題;我最終創建了一個新項目,並將其清理完畢。