1

我正在尝试以 Oracle MAF 形式实施FROMTO Date验证。

在 ADF 中,我看到了类似<af:validateDateTimeRange minimum="" maximum=""/>. 从这个博客你可以得到更多的细节,它可以在 ADF 应用程序中实现。

但我在 Oracle MAF 中找不到这样的标签。如果您有任何支持此要求的链接,您能否建议我?

4

2 回答 2

1

您需要使用值更改侦听器。MAF 中没有等效的标签

坦率

于 2016-01-04T10:36:09.040 回答
0

正如 Frank 所建议的,以下是实现此目的的解决方法。

AMX 页面:

<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");             
        }
    }
}

此方法将从前屏幕获取日期和当前日期,并转换为时间戳格式以验证哪个更大。

如果From Date大于 To Date那么它会通过说“From Date 应该小于 To Date.!”来向您显示警报。. 下面是屏幕截图,它将如何在正面屏幕中呈现。

在此处输入图像描述

希望这对某人有帮助。!

于 2016-02-10T13:32:19.747 回答