2013-10-03 2 views
1

У меня есть 2.0 приложения JSF, который имеет компонент сеанса, доступ из home.xhtml следующим образом:Перенаправление в сессионный компонент @PostConstruct

@Named(value = "home") 
@SessionScoped 
public class Home implements Serializable{ 

@PostConstruct 
    public void init() { 
// Retrieve database data here 
     try { 
     } catch (Exception ex) { 
      System.out.println("EXCEPTION"); 


     } 
    } 
} 

То, что я хочу сделать, это, если поисковая база данных не может , перенаправить на страницу error.xhtml. Как это делается в методе init выше?

ответ

1

Не нужно вручную переписывать с перенаправлением. Просто бросьте исключение прямо.

@PostConstruct 
puclic void init() throws Exception { // Please be more specific, e.g. SQLException. 
    // Retrieve database data here without try/catch block. 
} 

Это будет уже в конечном итоге на странице ошибки HTTP 500, местоположение которого (и, таким образом, look'n'feel) могут быть настроены web.xml:

<error-page> 
    <error-code>500</error-code> 
    <location>/WEB-INF/errorpages/500.xhtml</location> 
</error-page> 

В случае, если вы хотите также распространяйте исключения по запросам ajax, голова к этому ответу: What is the correct way to deal with JSF 2.0 exceptions for AJAXified components?

+0

@onepotato: Просто прекратите заявлять о допущениях. Задайте вопрос и укажите наблюдения. – BalusC

+0

Я обязательно заметлю, что в моих будущих взаимодействиях. – Bnrdo

+0

Привет @BalusC, могу ли я использовать тот же подход для перенаправления на страницу входа в систему, если имя пользователя или пароль неверны? Или есть еще один более приемлемый способ выполнить это? – Anatoly

2

Вы можете использовать метод External Context'sredirect(java.lang.String).

FacesContext facesContext = FacesContext.getCurrentInstance(); 
ExternalContext externalContext = facesContext.getExternalContext(); 
externalContext.redirect("page2.xhtml"); 
Смежные вопросы