【问题标题】:Java JSF: Editing rows in a dataTable tagJava JSF:编辑数据表标记中的行
【发布时间】:2012-10-17 14:03:18
【问题描述】:

我正在尝试根据本文中的方法更新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 新手,所以可能我在这里忘记了一些非常基本的东西......

【问题讨论】:

    标签: java jsf


    【解决方案1】:

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

    <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 转换器,并且可以创建自定义数据转换器。更多信息:

    【讨论】:

    • +1 解决方案,让我们了解“PrimeFaces 和 RIchFaces 日历”方法
    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多