FacesContext.getCurrentInstance (). GetExternalContext (). Redirect не перенаправляет сразу - PullRequest
6 голосов
/ 05 ноября 2010

Id передается в качестве параметра Url.Я стараюсь убедиться, что id это число.Если не перенаправить на главную страницу

if(facilityId != null){
    try{
        Long.parseLong(facilityId);
    }catch(NumberFormatException e){
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("DisplayList.jsf");                    
        } catch (IOException ex) {}
    }
    facility = documentSBean.findFacilityById(Long.parseLong(facilityId));
    ...
}

, поэтому, если я передаю идентификатор, подобный этому

www....?facilityId=3?sdfasfda

, я ловлю, что 3?sdfasfda не является числом, и получаю к перенаправлениюоператор, но он не перенаправляет в нужном направлении, он выполняет следующие две строки, которые пытаются преобразовать 3?sdfasfda в Long, следовательно, дают NumberFormatException.Так есть ли способ принудительного перенаправления прямо сейчас, или есть какой-то другой способ решить эту проблему.Жаль, что есть else после catch: D: D.Вышеуказанные коды находятся внутри моего @PostConstruct init() метода

1 Ответ

19 голосов
/ 05 ноября 2010

Да, просто return из метода:

FacesContext.getCurrentInstance()
   .getExternalContext().redirect("DisplayList.jsf");
return;

Когда вы вызываете redirect(..), единственное, что происходит, это то, что в объекте ответа устанавливается специальный заголовок (Location).Но поток вызывающего метода продолжается, если только вы не return из него после вызова перенаправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...