nullpointerexceptionを投げる代わりに、JSFを施行してBeanの新しいインスタンスを作成する方法は?
-
20-09-2019 - |
質問
私は何か間違ったことをしていると確信しているので、質問のタイトルは少し間違っています。
新しいユーザーオブジェクト(ログイン、パスワード、誕生日などのフィールド)を作成するためのいくつかのフィールドを備えたフォームがあります。そして、私は2つのボタンを持っています - キャンセルと作成。私はまだ作成を終了していませんでした:)、しかし、私がキャンセルを押すと、nullpointerexceptionが見えます。ここに簡略化されたコードがあります:
<f:view>
<h:form>
<h:panelGroup layout="block">
<h:inputText id="add_login" value="#{userSupport.user.login}"/>
<h:inputSecret id="add_password" value="#{userSupport.user.password}"/>
<h:inputText id="add_name" value="#{userSupport.user.name}"/>
<h:inputText id="add_surname" value="#{userSupport.user.surname}"/>
<h:commandButton value="Cancel" action="cancel"/>
</h:panelGroup>
</h:form>
</f:view>
Usersupportクラスにはフィールドがあります user
GetterとSetter、およびその他の方法で。セッションスコープを備えたスプリングビーンです。
キャンセルを押すと、JSFがユーザーオブジェクトの入力から値を保存しようとするため、NPEが表示されますが、ユーザーオブジェクトはnullです。
これを行う正しい方法は何ですか?
解決
キャンセルボタンを設定します immediate="true"
これにより、すべての「望ましくない」フェーズがスキップされます。
ただし、「作成」ボタンで同じ問題が発生し、使用しないでください immediate
そこの。より良い初期化 user
プロパティ-constructorまたは使用のいずれか @PostConstruct
初期化アクションを実行するメソッドの注釈。
所属していません StackOverflow