By Alvin Alexander. Last updated: June 4, 2016
Using JavaServer Faces (JSF), if you can't see the error message (FacesError) you're creating in your controller/handler when you forward to a new JSP (JavaServer Page), the problem may be that you have a "redirect" tag in your faces-config.xml
file.
For example, the following JSF faces-config.xml
example shows the problem, where I do have a redirect
tag when I bounce control back to the login.jsp
page:
<><navigation-rule> <from-view-id>/login.jsp</from-view-id> <navigation-case> <from-outcome>login-success</from-outcome> <to-view-id>/main.jsp</to-view-id> <redirect/> </navigation-case> <!-- the "redirect" tag below is bad; your error message (FacesError) will never be seen --> <navigation-case> <from-outcome>login-failure</from-outcome> <to-view-id>/login.jsp</to-view-id> <redirect/> </navigation-case> </navigation-rule>
Fortunately this is a simple fix. To make sure users do see your JSF error message (FacesError), just take the redirect
tag out of your JSF navigation rule, as shown here:
<><navigation-rule> <from-view-id>/login.jsp</from-view-id> <navigation-case> <from-outcome>login-success</from-outcome> <to-view-id>/main.jsp</to-view-id> <redirect/> </navigation-case> <!-- taking the redirect tag out of here let's the user see your error message --> <navigation-case> <from-outcome>login-failure</from-outcome> <to-view-id>/login.jsp</to-view-id> </navigation-case> </navigation-rule>