I finally wrote my own findComponent method, which looks for recursively a 
component.

The method is like this :

public class JSFUtils {
  | 
  |     public static UIComponent findComponent(UIComponent component, String 
id) {
  |             if (component.getId().equals(id)) {
  |                     return component;
  |             }
  |             else {
  |                     List<UIComponent> children = component.getChildren();
  |                     for (UIComponent myComponent : children) {
  |                             UIComponent componentFound = 
findComponent(myComponent, id);
  |                             if (componentFound != null) return 
componentFound;
  |                     }
  |                     return null;
  |             }
  |     }
  | 
  | }

Then my validator class is like this :
public void validate(FacesContext context, UIComponent cmp, Object value)
  |             throws ValidatorException {
  |     String compareTo = (String) cmp.getAttributes().get("compareTo");
  |     String messageKey = (String) cmp.getAttributes().get("message");
  |     UIInput input = (UIInput) JSFUtils.findComponent(context.getViewRoot(), 
compareTo);
  |     String otherValue = (String) input.getValue();
  |     boolean error = false;
  |     if (value != null) {
  |             if (! value.equals(otherValue)) {
  |                     error = true;
  |             }
  |     }
  |     else {
  |             if (otherValue != null) {
  |                     error = true;
  |             }
  |     }
  |     if (error) {
  |             String msg = Messages.instance().get(messageKey);
  |             throw new ValidatorException(new FacesMessage(msg));
  |     }
  | }

Hope it will help people who need this.

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

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

Reply via email to