I have a factory method that takes a request parameter, and loads an entity. My 
problem relates to what happens when the factory is passed an id that is not a 
valid value, and how it is handled.

One option is to throw the entity not found exception which then redirects to a 
single error page. Nice solution except that the page you want to end up on 
could vary depending on the entity you were trying to load. I.e. Go back to the 
widget list if you can't find the widget. This could be gotten around by using 
custom exceptions (i.e. WidgetNotFoundException), which would also maintain the 
degree of loose coupling rather than hardcoding views in the factory method.

Alternatively, I tried to add a faces message to the message list, and issue a 
redirect upon detection of the error.  This works, to the extent that messages 
are added and the page is redirected, but it has its problems...

In both cases, the factory method is called multiple times in the original page 
since when the factory method is called, an error occurs and the variable is 
never resolved. Therefore, we repeat the factory code with the error in it 
multiple times. 
The second method has the unpleasant side effect that the faces message is 
added multiple times as opposed to just being added once and re-directed. 
Regarding the first method, it still works, but again, it's just wasteful to 
keep repeating the factory method when it won't work. Being an exception should 
surely force Seam to stop whatever it is doing and work based on the exception.

In a worst case scenario, I could use the custom exception classes, and 
redirect to specific pages per entity type as needed, or I could use a flag to 
indicate whether an error has already occured in the bean to prevent multiple 
messages. However, again, it seems to come down to a best practices question. 

I was just wondering if anyone had any experiences with good entity exception 
handling? The problem however, could also extend to other types of exceptions 
such as authorization exceptions when you determine that the user cannot 
perform specific functions.



View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4086269#4086269

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4086269
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to