#java #jsf #servlets
#java #jsf #сервлеты
Вопрос:
В принципе, у меня есть представление, в котором пользователь вводит некоторую информацию и отправляет ее. Эта информация будет отправлена третьей стороне, которая будет обрабатывать данные. Третья сторона отправит мне результат обратно, и я перехвачу его в сервлете. Теперь, чтобы продолжить работу в моем приложении, в зависимости от результата, который был отправлен мне третьей стороной, мне нужно проверить значение, полученное моим сервлетом в одном из моих сеансовых компонентов (причина, по которой я не могу проверить это значение непосредственно в сервлете, заключается в том, что мне нужны некоторыеинформация из моих компонентов), поэтому мой вопрос в том, как я могу это сделать, не имея возможности получить доступ к FacesContext из сервлета?
Я понимаю, что я мог бы предварительно создать FacesContext непосредственно в моем сервлете, чтобы получить к нему доступ, но я также понимаю, что это не рекомендуется. Я также слышал об использовании PhaseListener, но я понятия не имею, как добиться этого в моем случае, и я не уверен, действительно ли это решит мою проблему, и если нет более простого решения.
Это то, что у меня есть прямо сейчас:
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException
{
try
{
req.setCharacterEncoding("UTF-8");
String response = req.getParameter( "response");
HttpSession sess = req.getSession();
MyBean myBean= (MyBean) sess.getAttribute("myBean");
//I am setting the response in my bean here, so I can
//use it later to verify its value and move on the user within
//the application depending of the value
myBean.setResponse(response);
resp.sendRedirect("view1.jsf");
}
catch (Exception e)
{
}
Это действительно работает, и я перенаправляюсь на view1, однако я не знаю, как вызвать компонент, который я хочу проверить ответ оттуда.
Любая помощь была бы очень признательна здесь. (Если мне повезет, я мог бы получить некоторые идеи от @BalusC ;))
Комментарии:
1. Если это компонент, управляемый JSF, разве вы не можете вызвать его, используя #{MyBean} в представлении?
2. @Nikhil Talreja Абсолютно да. Это компонент, управляемый JSF, и я мог бы использовать #{MyBean} . Но моя цель — проверить ответ, полученный сервлетом сразу после его получения, не требуя каких-либо действий со стороны пользователя.
3. Какой компонент вы пытаетесь вызвать, из какой части вашего кода xhtml, сервлета?
4. Нужно ли вызывать метод в компоненте JSF внутри сервлета?
5. Пока я могу передавать значение, полученное сервлетом, обратно в мой контекст JSF, чтобы использовать его в своих компонентах, я могу вызвать свой метод проверки в компоненте либо из сервлета, либо нет. В основном то, чего я пытаюсь достичь здесь, — это 2-факторная аутентификация. Как только пользователь войдет в систему со своими учетными данными, третья сторона будет взаимодействовать с пользователем, а затем отправлять результат этого взаимодействия сервлету. В зависимости от результата мне нужно либо войти в систему пользователя, либо отправить его обратно на шаг аутентификации 1. Так что в основном мне просто нужно передать значение обратно в сервлет и завершить работу.