1

我正在尝试根据本文中的方法更新 JSF 数据表中的一行:http ://www.mkyong.com/jsf2/how-to-update-row-in-jsf-datatable/

当我单击保存时,我收到此错误消息:

'null Converter' 的转换错误设置值'1970-09-08'。

截屏: 截屏

标记:

<h:form>
                        <h:commandButton action="addEmployee" value="Add New" class="btn btn-primary" />
                        <br />

                        <h:dataTable class="table table-striped" value="#{employeeCollection.items}" var="item">
                            <h:column>
                                <f:facet name="header">Edit</f:facet>
                                <h:commandButton action="#{employeeCollection.edit(item)}" value="Edit" class="btn" rendered="#{not item.isEditing}" />
                                <h:commandButton action="#{employeeCollection.save(item)}" value="Save" class="btn btn-success" rendered="#{item.isEditing}" />
                            </h:column>
                            <h:column>
                                <f:facet name="header">First Name</f:facet>
                                <h:inputText value="#{item.firstName}" rendered="#{item.isEditing}" />
                                <h:outputText value="#{item.firstName}" rendered="#{not item.isEditing}" />
                            </h:column>
                            <h:column>
                                <f:facet name="header">Last Name</f:facet>
                                <h:inputText value="#{item.lastName}" rendered="#{item.isEditing}" />
                                <h:outputText value="#{item.lastName}" rendered="#{not item.isEditing}" />
                            </h:column>
                            <h:column>
                                <f:facet name="header">Date of Birth</f:facet>
                                <h:inputText value="#{item.dateOfBirth}" rendered="#{item.isEditing}" />
                                <h:outputText value="#{item.dateOfBirth}" rendered="#{not item.isEditing}" />
                            </h:column>
                        </h:dataTable>
                    </h:form>

我会发布托管 bean 代码,但我认为这没有必要,因为当单击“保存”按钮时,无论如何似乎都不会调用 save(item) 函数......所以它必须是别的东西。我是Java新手,所以可能我在这里忘记了一些非常基本的东西......

4

1 回答 1

4

该错误描述了String使用null转换器转换时出错。如果您在标签组件中使用没有转换器的Date对象,则会发生这种情况。您可以通过更改 JSF 代码来解决此问题:<h:inputText>DateTime

<h:column>
    <f:facet name="header">Date of Birth</f:facet>
    <h:inputText value="#{item.dateOfBirth}" rendered="#{item.isEditing}">
        <!-- adding the datetime converter -->
        <f:convertDateTime pattern="yyyy-MM-dd" />
    </h:inputText>
    <h:outputText value="#{item.dateOfBirth}" rendered="#{not item.isEditing}" />
</h:column>

尽管如此,这并不是为您和您的用户处理日期验证的好方法。最好使用为您提供日历组件的第三方库,例如PrimeFaces CalendarRichFaces Calendar

请注意,您可以使用 JSF 提供的 DateTime 和 Numbers 转换器,并且可以创建自定义数据转换器。更多信息:

于 2012-10-27T16:12:44.893 回答