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
不是一个数字,并且转到redirect语句,但是它没有正确地重定向,它会执行下一行尝试将3?sdfasfda
转换为long的行因此产量NumberFormatException
。那么有没有办法立即强制重定向,或者是否有其他方法来解决这个问题。希望else
之后有catch
:D:D。以上代码位于我的@PostConstruct init()
方法
答案 0 :(得分:19)
是的,只需从方法中return
:
FacesContext.getCurrentInstance()
.getExternalContext().redirect("DisplayList.jsf");
return;
当您调用redirect(..)
时,唯一发生的事情是在响应对象中设置了一个特殊的标头(Location
)。但是,调用方法的流程将继续,除非您在调用重定向后从return
开始。