JSF で簡単なブログを作成しようとしています。ただし、同じステートフル ejb インスタンスを 2 つの異なるマネージド Bean に注入する方法がわかりません。@ManagedProperty アノテーションを使用して、注入を間接的に行うことができることを知っています。そんな感じ:
@ManagedBean
@ViewScoped
public class PostController implements Serializable {
private static final long serialVersionUID = 1L;
private Post temporaryPost;
@ManagedProperty(value = "#{authenticationController}")
private AuthenticationController authenticationController;
@Inject
private PostEJB postEJB;
public void save() {
getTemporaryPost().setAuthor(
getAuthenticationController().getAuthenticationEJB()
.getCurrentSessionUser());
postEJB.create(getTemporaryPost());
}
}
脱ぎたい
@ManagedProperty(value = "#{authenticationController}") プライベート AuthenticationController authenticationController;
のように AuthenticationEJB を直接注入します。
@Inject private AuthenticationEJB authenticationEJB;
だから、代わりに
getAuthenticationController().getAuthenticationEJB() .getCurrentSessionUser()
私は手に入れます
authenticationEJB.getCurrentSessionUser()
ただし、問題は、これが現在ログインしているユーザー (ユーザーが null) を含まない新しい authenticationEJB インスタンスであることです。同時に authenticationController.authenticationEJB.currentsessionuser にはログインしているユーザーが含まれています。
前もって感謝します!
最後に答えが出ました!簡単です:
@ManagedProperty(value = "#{authenticationController.authenticationEJB}")
private AuthenticationEJB authenticationEJB;
現在は、同じ authenticationEJB インスタンスを指しています。とはいえ、他にも方法はあると思います。