Как вернуть двух разных типов пользователей "Ученик" и "Учитель" при входе в систему? - PullRequest
2 голосов
/ 16 февраля 2012

Я пытаюсь реализовать метод входа в систему с помощью JSF, EJB и JPA. Мой текущий подход заключается в том, что я передаю логин и пароль со страницы jsf управляемому бину, а метод login () в бине запускается, когда пользователь нажимает кнопку.

Затем метод login вызывает метод authenticate в EJB-бине, и здесь возникает мой вопрос. У меня есть два типа пользователей (две сущности, ученик и учитель), так что должно быть возвращаемым значением метода EJBs в случае, если пользователь был найден?

Я думал о возвращении идентификатора объекта, а затем получить свою сущность с этим идентификатором в управляемом компоненте. Или сделайте это как-нибудь с помощью полиформизма, но мои сущности уже расширяют класс AbstractEntity (который содержит только id и сеттеры / получатели), и я не вижу, как это могло бы помочь мне с моей проблемой. Цель состоит в том, чтобы после успешного входа в исходный управляемый bean-компонент мой пользовательский объект.

Большое спасибо за ответы, возможно, это глупый вопрос, но у меня действительно нет идей: -)

1 Ответ

1 голос
/ 16 февраля 2012

В основном у вас есть 2 варианта:

  1. Позвольте Student и Teacher расширять общий абстрактный класс, такой как Person или User.Это работает, конечно, только лучше, если есть (почти) только общие методы.

  2. Создайте другой класс, например Person или User, который может принимать Student или Teacherв качестве аргумента конструктора, и пусть все методы делегируются обернутому экземпляру.Затем вы должны смоделировать этот класс в соответствии с потребностями представлений.Вы, конечно, не можете и не хотите делать instanceof в выражениях EL.

    Это можно дополнительно абстрагировать, создав 3 класса: один базовый абстрактный класс-оболочку, который необходим представлениям, и две конкретные реализации.тот, который должен обернуть Student и другой, который должен обернуть Teacher.Это обеспечивает более простое расширение, когда вы хотите добавить еще одного пользователя.

...