1

JSF で奇妙な問題が発生しました。

イメージを取得するメソッドを呼び出す PrimeFaces GraphicImage があります。

さて、私はこのメソッドをこのコンポーネントだけで使用するように書いたので、1 回だけ呼び出されることを期待していますが、ここで驚きがあります。同じページで、このメソッドは異なるパラメーターで 2 回呼び出されます!

<pou:graphicImage rendered="true" height="150" style="border: 1px dotted; margin-left: 150px;" value="#{userDataBean.getAvatar()}" width="150"/>

public StreamedContent getImage(Utente u) throws IOException {
    File avatar = new File(FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/images/no_avatar.png"));
    if (u.getFoto() == null) {
        return new DefaultStreamedContent(new ByteArrayInputStream(Files.readAllBytes(avatar.toPath())), "image/jpeg");
    }
    return new DefaultStreamedContent(new ByteArrayInputStream(u.getFoto()), "image/jpeg");
}

public StreamedContent getImage() throws IOException {
    return getImage(utente);
}

したがって、 getImage(Utente u) は問題なく動作する汎用メソッドです。

utenteingetImage()は取得元のユーザーです#{request.getParameter('user')}

今、このメソッドを使用して、ユーザーのプロフィールにアバターを表示します。

問題は、プロファイル ページを開くと、 getImage()2 回呼び出されることです。1 回目は値が正しく、ユーザーのアバターが読み込まれます。しかし、それは 2 回目に呼び出され、今回utenteは の値を取得#{loginBean.utente}します。これはログインしているユーザーであり、この行には、表示したいユーザーのアバターではなく、ログインしているユーザーのアバターが表示されます。

ここで質問があります。このメソッドを 1 回だけ記述したとしても、このメソッドが 1 回呼び出されるのをどのように停止できますか?

何が起こっているのかわかりません :|

4

0 に答える 0