nullpointerexceptionを投げる代わりに、JSFを施行してBeanの新しいインスタンスを作成する方法は?

StackOverflow https://stackoverflow.com/questions/1922434

質問

私は何か間違ったことをしていると確信しているので、質問のタイトルは少し間違っています。

新しいユーザーオブジェクト(ログイン、パスワード、誕生日などのフィールド)を作成するためのいくつかのフィールドを備えたフォームがあります。そして、私は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 初期化アクションを実行するメソッドの注釈。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top