2010-11-04 21 views
6

Bir Id bir Url parametresi olarak iletiliyor. id'un bir sayı olduğundan emin olmaya çalışıyorum. Değilse buFacesContext.getCurrentInstance(). GetExternalContext() Yönlendirme hemen yeniden yönlendirmiyor

www....?facilityId=3?sdfasfda 

gibi bir id geçmek eğer 3?sdfasfda bir sayı olmadığını yakalamak ve yönlendirme açıklamaya olsun ana sayfaya yüzden

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)); 
    ... 
} 

yönlendirme yapar, ancak öyle değil doğru bir şekilde yönlendirme, 3?sdfasfda bir Uzun, bu nedenle NumberFormatException verim dönüştürmek için deneyin sonraki çift satırları yürütmek. Yani, yeniden yönlendirmeyi zorlamak için bir yol var mı yoksa bu sorunu çözmek için başka bir yol var mı. catch: D: D'den sonra else olmasını isteyin. Yukarıdaki kodları benim @PostConstruct init() yöntemi içinde

cevap

18

Evet, yöntemi basitçe return şunlardır: Eğer redirect(..) çağırmak

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

olur tek şey özel başlığı (Location) tepki nesnesinde ayarlanmış olmasıdır . Ancak, yönlendirme yönteminin akışı, siz yönlendirme aradıktan sonra sizden return değilse, devam eder.

+0

ai ya. Neden bunu düşünmedim. Teşekkür ederim: D. Yönlendirmede neden gecikme olduğunu biliyor musunuz? –

+0

döndüğünüzde gecikme olmayacak. – Bozho

İlgili konular