1

この記事の方法に基づいて、JSF データ テーブルの行を更新しようとしています: http://www.mkyong.com/jsf2/how-to-update-row-in-jsf-datatable/

[保存] をクリックすると、次のエラー メッセージが表示されます。

「null コンバーター」の変換エラー設定値「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などの Calendar コンポーネントを提供するサードパーティ ライブラリを使用することをお勧めします。

DateTime および Numbers 用に JSF が提供するコンバーターを使用でき、カスタム データ コンバーターを作成できることに注意してください。より詳しい情報:

于 2012-10-27T16:12:44.893 に答える