2013-05-15 25 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

我不确定是什么问题;我最终创建了一个新项目,并将其清理完毕。