2012-02-16 22 views
2

我想用JSF,EJB和JPA實現登錄方法。我目前的做法是,我將jsf頁面的登錄名和密碼傳遞給託管bean,然後在用戶按下按鈕時觸發bean中的方法login()。如何在登錄時返回兩種不同類型的用戶「學生」和「教師」?

然後login方法在EJB bean中調用authenticate方法,這裏是我的問題。我有兩種類型的用戶(兩個實體,Student和Teacher),那麼在發現用戶的情況下應該如何返回EJB方法的值?

我在考慮返回實體的id,然後用託管bean中的id檢索我的實體。或者用polymoformism以某種方式做,但是我的實體已經擴展了AbstractEntity類(它只包含id和setter/getters),我也沒有看到它可以幫助我解決問題。目標是在原始託管bean成功登錄後擁有我的用戶實體。

非常感謝的答案,這是一個愚蠢的可能的問題,但我真的沒了主意:-)

回答

1

您已經基本上2種選擇:

  1. 讓雙方StudentTeacher延長一個共同的抽象類,如PersonUser。當然,如果只有(幾乎)只有通用的方法,那纔是最好的。

  2. 創建另一個類像PersonUser可以採取StudentTeacher作爲構造參數,讓所有方法委託給被包裝的實例。然後,您應該根據意見需要對這個班級進行建模。您當然不能也不想在EL表達式中使用instanceof。一個抽象基類的包裝,其意見需要和兩個具體的實施方式中,其中一個換行Student和其他應包裹Teacher

    這可進一步通過產生3類被抽象。當你想再次添加另一種用戶時,這允許更容易的擴展。

+0

感謝您的回答,我將定義與數字2,我的實體太不同了。 – 2012-02-16 18:22:13

+0

不客氣。 – BalusC 2012-02-16 18:25:38

相關問題