#jsf #jakarta-ee #redirect #oracle-adf
#jsf #джакарта-ee #перенаправление #oracle-adf
Вопрос:
Привет, я пытаюсь разработать страницу входа в систему с помощью oracle jdeveloper 12c и. Я работаю с технологией Java EE и страницами JSF. Я хочу перенаправить страницу с кнопки входа в систему после проверки наличия пользователя в базе данных, если пользователь был найден, он перенаправляется на главную страницу.Jsf еще перенаправляет на Login.jsf Проблема в обоих случаях перенаправляет на Login.jsf. PS: я не вносил никаких изменений в faces-config или adfc-config это моя функция аутентификации
public String authentification(String login, String pwd) {
try{
Query query;
query = em.createQuery("select o from UserEntity o where " " o.login = :LOGIN AND o.pwd = :PWD");
query.setParameter("LOGIN",login);
query.setParameter("PWD",pwd);
query.getSingleResult();
return ("success") ;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
я уверен, что функция аутентификации работает правильно
это мой Dologin() в ManagedBean
public String DoLogin() {
BindingContainer bindings = getBindings();
OperationBinding operationBinding = bindings.getOperationBinding("authentification");
Object result = operationBinding.execute();
System.out.println("## Result = " result);
if (!operationBinding.getErrors().isEmpty()) {
return "/faces/MainPage.jsf?faces-redirect=true";
}
return "/faces/Login.jsf?faces-redirect=true";
}
журнал не показывает мне никаких исключений или ошибок
Комментарии:
1. Устанавливаете ли вы параметр сопоставления сервлетов в web.xml ? (если ваш ответ «да», как это сделать)
2. Нет, я этого не делал :/
3. Понятно, что проверка !operationBinding.getErrors().isEmpty() возвращает false (что означает отсутствие ошибок). Кроме того, вы обрабатываете все исключения, сгенерированные методом аутентификации, и если вы ничего не видите в журналах, это означает, что исключение не генерируется. Реализация метода аутентификации не кажется правильной.
4. Нет, я уверен, что функция аутентификации корректно работает в журналах, когда я пишу недействительный логин и пароль, которые он мне показывает: javax.persistence. Исключение NoResultException: getSingleResult() не извлекает никаких объектов. ## Результат = null @Endrik
Ответ №1:
попробуйте этот код
ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse)ectx.getResponse();
response.sendRedirect("../faces/login.jspx");