Well, custom validators belong to a real-life JSF web apllication like coffee 
to a good start into the day ;).

Let's take an example (there are many occurences of such a situation in my 
current app, but I love easy examples *g*):

- Entity Person
- has a n:m relation to multiple other persons (friends)
- has a relation to one specific person (best_friend)

When editing/creating a person you pick his/her friends from a list of persons 
(SelectManyMenu) and the best friend, too, (but from a SelectOneMenu).

So far so good, that was easy. BUT: There is an important constraint: The 
best_friend must be one of your friends, of course. So it's important to check 
this before saving.

There are two possibilities:

- In the action method ("store"): If best_friend is not contained in friends, 
add an error message, mark the transaction as rollback-only and redisplay the 
page (empty outcome: return null). Works, but it's UGLY

- In a custom JSF validator: BEAUTIFUL :)

Problem: The custom validator (that would be added to the best friend's 
SelectOneMenu) needs not only be aware of the best friend, but also of the list 
of friends. It's a "complex" validator (if I may call it like this), since it 
needs more information than only the status of the field it belongs to.

Possible Solution: Add a validateBestFriend(FacesContext, UIComponent, Object) 
method to the PersonEditorBean (SFSB), which holds the state of the edited 
person. So there the validator method has access to all the information it 
needs and can perform the check. If you select a "non-friend" as best friend, 
it throws a ValidatorException.

New problem: The ValidatorException is caught by the Stateful Bean and the app 
crashed with an exception report. The ValidatorException is not passed through 
to JSF as EJB3 intervenes. DAMN!

So any idea how to make EJB3 ignore the Exception and pass it through? Or how 
to have such a "complex" validation performed in an other way?

I'd be thankful for any answer :).

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

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

Reply via email to