0

我有一个扩展 DateTimeConverter 的自定义转换器,我在 faces-config.xml 中为 java.util.Date 类注册了它。基本上,新转换器所做的只是添加更具描述性的消息并将其传递到当前上下文,以便它可以显示在适当的 jspf 中。

对于我正在测试的屏幕上的一个日期字段,一切正常;对于另外两个,我的 getAsObject() 方法永远不会被调用。但是,我添加了一个 h:messages 标记用于调试,另外两个日期字段正在引发转换错误,因此它们仍在某处尝试转换。

我找不到这三个字段之间的区别。它们都使用相同的样式类,并且每个都由 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);

其中 XXXXXXX 是 varDetails 或 varDetails2。

4

1 回答 1

0

我不确定问题是什么;我最终只是创建了一个新项目,它清理了它。

于 2013-05-16T19:23:50.450 回答