Позвольте мне предвосхитить это, признав, что это мое первое веб-приложение и первый опыт работы с JSF, поэтому я, вероятно, принял несколько неудачных дизайнерских решений.
Вот что я пытаюсь сделать: У меня есть веб-приложение, использующее JSF 2.0, которое доступно через холст Facebook.Это веб-приложение позволяет пользователю просматривать / манипулировать данными из базы данных показаний датчиков.В первый раз, когда пользователь Facebook получает доступ к моему приложению, я прошу пользователя ввести учетные данные для входа в базу данных, а затем отправить пользователя на домашнюю страницу.После этого пользователь всегда должен идти прямо на домашнюю страницу, поскольку я связываю идентификатор FB пользователя с профилем пользователя базы данных.
Текущая реализация: У меня есть URL-адрес холста Facebook, идущий ксервлет.Этот сервлет проверяет параметр Sign_request, переданный Facebook, чтобы получить идентификатор пользователя, а затем просматривает базу данных, чтобы узнать, завершил ли пользователь процесс инициализации.Если пользователь сделал это, он перенаправляется на домашнюю страницу приложения.
Проблема: Большая часть моей логики для выполнения этих проверок в настоящее время существует в управляемом компоненте (в области сеанса),Чтобы использовать bean-компонент в сервлете, я вручную создаю экземпляр bean-компонента и добавляю его в сессию, поскольку среда JSF еще не имела возможности его создать.Поскольку моя система усложняется, это вызывает проблемы из-за зависимостей между различными bean-компонентами.Кроме того, это выглядит, как правило, плохим подходом к проблеме.
Решения? Из моего поиска в Интернете кажется, что может быть несколько способов сделать это.Один из способов - установить холст на целевую страницу JSF, где управляемый bean-компонент может получить параметр signature_request и проверить, что пользователь завершил этап подготовки.Оттуда боб будет перенаправлять на соответствующую страницу.Другая возможность может заключаться в том, чтобы иметь готовый компонент, который делает то же самое, но это кажется «неправильным».
Каков наилучший способ решить эту проблему и придерживаться «правильных» парадигм JSF?Заранее спасибо!