Wanna Coffee
Wanna Coffee

Reputation: 2798

validateDateTimeRange tag for Oracle MAF

I'm trying to implement FROM and TO Date validation in Oracle MAF form.

In ADF I have seen the tag some thing like <af:validateDateTimeRange minimum="" maximum=""/>. From this blog you can get more details, It can be implemented in ADF application.

But I could't find such tag in Oracle MAF. Can you please suggest me, if you got any link to support this requirement?

Upvotes: 1

Views: 399

Answers (2)

Wanna Coffee
Wanna Coffee

Reputation: 2798

As suggested by Frank, below is the workaround to achieve this.

AMX Page:

<amx:inputDate value="#{bindings.inspFromDate.inputValue}" label="From Date" showRequired="true" inputType="datetime" valueChangeListener="#{validationBean.dateValidation}"/>
<amx:inputDate value="#{bindings.inspToDate.inputValue}" label="To Date" showRequired="true" inputType="datetime" valueChangeListener="#{validationBean.dateValidation}"/>

ValidationBean.java

public void dateValidation(ValueChangeEvent valueChangeEvent) throws ParseException {
    String fromDate = (String) AdfmfJavaUtilities.evaluateELExpression("#{bindings.inspFromDate.inputValue}");
    String toDate = (String) AdfmfJavaUtilities.evaluateELExpression("#{bindings.inspToDate.inputValue}");
    
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
    formatter.setTimeZone(TimeZone.getTimeZone("IST"));

    if (fromDate != null && !fromDate.isEmpty() && toDate != null && !toDate.isEmpty()) {
        
        java.util.Date inputFromDate = formatter.parse(fromDate);
        java.sql.Timestamp formattedFromDate = new Timestamp(inputFromDate.getTime());
        
        java.util.Date inputToDate = formatter.parse(toDate);
        java.sql.Timestamp formattedToDate = new Timestamp(inputToDate.getTime());
        
        if (formattedFromDate.compareTo(formattedToDate) > 0) {
            System.out.println("fromDate is greater than toDate");
            throw new AdfException("From Date should be less than To Date.!", AdfException.INFO);
        } else if (formattedFromDate.compareTo(formattedToDate) < 0) {
            System.out.println("fromDate is less than toDate");
        } else if (formattedFromDate.compareTo(formattedToDate) == 0) {
            System.out.println("fromDate is equal to toDate");             
        }
    }
}

This method will get both from date and to date from the front screen and convert into timestamp format to validate which is greater.

If From Date is greater than To Date, then it will show you the alert by saying that "From Date should be less than To Date.!". Below is the screenshot, how it will render in the front screen.

enter image description here

Hope this helps some one.!

Upvotes: 0

Frank Nimphius-Oracle
Frank Nimphius-Oracle

Reputation: 711

you would need to use a value change listener. There is no equivalent tag in MAF

Frank

Upvotes: 1

Related Questions