1

奇妙な動作があります: で注釈が付けられたメソッド@PostConstructが 2 回呼び出されます。

それをデバッグすると、コマンド リンクのアクション メソッドmbean.editが呼び出される前に検索ページがそれを呼び出していることがわかりました。私のビーンMBeanSearchはリクエストスコープで、MBeanビュースコープです。

私のビューsearch.xhtml:

<h:commandLink value="#{var.value}" action="#{mbean.edit}">
    <f:param name="id" value="#{var.id}"/>
</h:commandLink>

ターゲット ビュー var.xhtml もあります。

MBean私の豆からの関連抽出物:

    public String edit() {
        return "/pages/var.xhtml";
    }

    @PostConstruct
    public void initialize() { }

このコードで@PostConstructは、編集メソッドの後に my が呼び出され、後で再度呼び出されます。

@PostConstructを間違った方法で使用していると思います (MBeanメソッドの前に起動する必要があると思います)。しかし、検索ページとは別のページでオブジェクトを編集する代替手段は何でしょうか?

4

1 に答える 1

0

問題は、ビュー スコープのマネージド Bean mbean(少しわかりにくいと思います) が and で使用されsearch.xhtmlていることのようvar.xhtmlです。

アクションメソッドを呼び出すと、まだ表示されていますsearch.xhtml。このビューのビュー スコープにバインドされた Bean インスタンスと、@PostConstructメソッドへの最初の呼び出しを取得します。

アクション メソッドは 2 番目のページのビュー ID を返し、var.xhtmlJSF はこのページに移動します。このページでも使用するmbeanと、ビューが変更されたときに Bean の新しいインスタンスが取得されます。これは、メソッドへの 2 番目の呼び出しを説明してい@PostConstructます。

于 2013-04-27T07:53:38.670 に答える