0

私たちはJSFを初めて使用し、次の問題に苦しんでいます。

ユーザーがボタンをクリックして詳細ページに移動できる検索ページがあります。この詳細ページに到達すると、選択したレコードが正しく表示されます。

ユーザーが値を編集すると、バリデーターが起動します。カスタムバリデーターは2つのことをチェックします。-レコードがすでにDBにある場合(一意)-値が空でない場合

ユーザーが現在の値を空の文字列に削除して送信すると、バリデーターは値を空にすることは許可されていないと言います。

ユーザーが値を前の値に戻し、送信すると、バリデーターは現在の値を検証して検索ページに戻る必要があります。

ここでの問題は次のとおりです。使用する場合:

<h:outputLabel value="Supplier Id" />
<h:outputLabel value="#{flash.keep.supplier.id}" />

すべてが機能します。ただし、ユーザーからIDを非表示にし、非表示フィールドを使用したいと思います。

outputLabelを削除し、以下を使用する場合:

<h:inputHidden value="#{flash.keep.supplier.id}" />

このアプリケーションは、既存のサプライヤを同じ名前で保存するのではなく、新しいサプライヤを挿入しようとしていると見なします。

NetBeans開発環境でJSF2.0、GlassFishServer3.1.2を使用しています。

BeanはRequestScopedです

ソースコードは https://bitbucket.org/dasdan20/timereg4wb-webで入手できます。

ビューは次のとおりです。Web/suppliers/ search.xhtml Web / supliers / addedit.xhtml

Beanとバッキングコード:src / task / SupplierTask.java src / task.validation / SupplementerUniqueValidator src / domain / Supplementer.java

DBバックエンドはMySQLです。DBのバックアップはsrc/MySQLDatabaseにあります。

前もって感謝します

K&K

4

1 に答える 1

0

あなたはおそらくそれを間違っています。選択したサプライヤーを「記憶」するために、より長いスコープを持つ新しい Bean を作成します。

@RequestScoped
SupplierController
// Almost everything here

@SessionScoped
StatefulSupplierController
// State that needs to be saved
于 2012-10-07T19:31:36.187 に答える