public void validate(FacesContext facesContext,
UIComponent uiComponent,
Object value) throws ValidatorException {
// -------------------------------------------------------- ValidatorIF
if (facesContext == null) throw new NullPointerException("facesContext");
if (uiComponent == null) throw new NullPointerException("uiComponent");
if (value == null)
{
return;
}
UIComponent foreignComp = uiComponent.getParent().findComponent(_for);
if(foreignComp==null)
throw new FacesException("Unable to find component '" + _for + "' (calling findComponent on component '" + uiComponent.getId() + "')");
if(false == foreignComp instanceof EditableValueHolder)
throw new FacesException("Component '" + foreignComp.getId() + "' does not implement EditableValueHolder");
EditableValueHolder foreignEditableValueHolder = (EditableValueHolder) foreignComp;
if (foreignEditableValueHolder.isRequired() && foreignEditableValueHolder.getValue()== null ) {
return;
}
Object[] args = {value.toString(),(foreignEditableValueHolder.getValue()==null) ? foreignComp.getId():foreignEditableValueHolder.getValue().toString()};
if(foreignEditableValueHolder.getValue()==null || !foreignEditableValueHolder.getValue().toString().equals(value.toString()) )
{
throw new ValidatorException(getFacesMessage(EQUAL_MESSAGE_ID, args));
}
}
|