That's it.
Thanx Gilles.

On 7/18/06, Gilles DEMARTY <[EMAIL PROTECTED]> wrote:
the validator must be done on the second inputCalendar, since the data
is not loaded before. You shoud adapt the valildate method accordingly

2006/7/18, Ali Abdel-Aziz Ali < [EMAIL PROTECTED]>:
> Hello All,
>
> I have Custom Validator problem.
> I have two input calenders and I want to make some validation on their
> values
> any validation.
>
> so this the UI code:
>
> <h:outputText value="From Date:" style="font-weight:bold"/>
> <t:inputCalendar id="FromDate"
> monthYearRowClass="yearMonthHeader"
> weekRowClass="weekHeader"
>
> currentDayCellClass="currentDayCell"
> value="#{positionPopup.fromDate}" renderAsPopup="true"
>
> popupTodayString="#{example_messages['popup_today_string']}"
> popupWeekString="#{example_messages['popup_week_string']}"
>                             renderPopupButtonAsImage="true" required="true"
> styleClass="required">
>             <f:validator validatorId="
> validators.datesOverlapValidator"/>
> </t:inputCalendar>
>
> <h:outputText value="Thru Date:" style="font-weight:bold" />
> <t:inputCalendar id="ThruDate"
> monthYearRowClass="yearMonthHeader"
> weekRowClass="weekHeader"
>
> currentDayCellClass="currentDayCell"
> value="#{ positionPopup.thruDate}" renderAsPopup="true"
>
> popupTodayString="#{example_messages['popup_today_string']}"
> popupWeekString="#{example_messages['popup_week_string']}"
>                             renderPopupButtonAsImage="true"
> required="false">
> </t:inputCalendar>
>
> and this is the validator code:
>
> public void validate(FacesContext facesContext,    UIComponent uiComponent,
> Object value)    throws ValidatorException
> {
>         if (facesContext == null) throw new
> NullPointerException("facesContext");
>                 if (uiComponent == null) throw new
> NullPointerException("uiComponent");
>                     if (value == null)
>                     {
>                         return;
>                     }
>
>             UIComponent foreignComp =
> uiComponent.getParent().findComponent(_for);        // _for =  "ThruDate" //
> equall to the second inputCalender ID
>             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()};
>
>             _logger.info(" From Date =  "+ args[0].toString() +" Thrue Date
> = "+foreignEditableValueHolder.getValue());
>
>
>             boolean overlap = this.overlap ( new Range(new Date(1), new
> Date(2)), new Range(new Date(1), new Date(2)));
>             if(!overlap)
>             {
>
> //if(foreignEditableValueHolder.getValue()==null ||
> !foreignEditableValueHolder.getValue().toString().equals(
> value.toString())  )
>
>                FacesMessage message = new FacesMessage();
>
> message.setDetail(Messages.getMessageString("RangeOverlapValidator")+" "+
> args[0].toString() +" "+args[1].toString() + ".");
>
> message.setSummary (Messages.getMessageString("RangeOverlapValidator")+" "+
> args[0].toString() +" "+args[1].toString() + ".");
>                message.setSeverity (FacesMessage.SEVERITY_ERROR );
>                throw new ValidatorException(message);
>             }
>     }
>
> but it always return the ThruDate = null however it can feel with it's
> properties like isRequired or not.
>
> Can Any buddy help?
> --
> Ali Abdel-Aziz
> http://www.aliabdelaziz.com
> http://aabdelaziz.blogspot.com



--
Ali Abdel-Aziz
http://www.aliabdelaziz.com
http://aabdelaziz.blogspot.com

Reply via email to