2012-02-16 17 views
2

JSF、EJB、およびJPAを使用してログインメソッドを実装しようとしています。私の現在のアプローチは、jsfページから管理されたBeanにログインとパスワードを渡していて、ユーザーがボタンを押すとBeanのメソッドlogin()が起動されるというものです。ログイン時に「Student」と「Teacher」の2種類のユーザーを返すにはどうすればよいですか?

次に、メソッドのログインがEJB beanのauthenticateメソッドを呼び出しています。ここで私の質問が来ます。 2つのタイプのユーザー(StudentとTeacherという2つのエンティティ)があるので、ユーザーが見つかった場合のEJBメソッドの戻り値はどのようにする必要がありますか?

私はentityのidを返すことを考えていましたが、そのidを持つマネージドBeanのエンティティを取得しました。それともポリモフォリミズムで何とかしますが、私のエンティティはすでにAbstractEntityクラス(IDとセッター/ゲッターだけを含む)を拡張しています。私の問題で私がどのように役立つかはわかりません。目標は、元のマネージドBeanでのsuccesfullログイン後にユーザーエンティティを持つことです。答えを

おかげで多くは、これはおそらく愚かな質問ですが、私はあなたが基本的に2つのオプションまし

答えて

1

:-)アイデアを本当に午前:

  1. StudentTeacherの両方が拡張してみましょうPersonまたはUserのような共通の抽象クラスです。それはもちろん、(ほとんど)共通の方法しかない場合には最良のものです。

  2. は、コンストラクタの引数としてStudentまたはTeacherを取り、ラップインスタンスにすべてのメソッドのデリゲートを聞かせすることができますPersonまたはUserのような別のクラスを作成します。次に、ビューが必要とするものに従ってこのクラスをモデル化する必要があります。もちろん、EL式でinstanceofを実行することはできません。

    これはさらに、ビューに必要な基本抽象ラッパークラスと、Studentをラップするものと、Teacherをラップする必要がある2つの具体的な実装の3つのクラスを作成することによって抽象化することができます。これにより、別の種類のユーザーを追加したい場合に、より簡単に拡張できます。

+0

答えをいただきありがとうございます。私は間違いなく2番に行っていきます。私の存在はあまりにも異なっています。 –

+0

ようこそ。 – BalusC

関連する問題