Oracle MAF的validateDateTimeRange标记

时间:2015-12-28 10:32:05

标签: java oracle-maf

我尝试在Oracle MAF表单中实现FROMTO Date验证。

在ADF中,我看到了标签,例如<af:validateDateTimeRange minimum="" maximum=""/>From this blog you can get more details,它可以在ADF应用程序中实现。

但是我无法在Oracle MAF中找到这样的标签。如果你有任何支持这个要求的链接,请你建议我吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

如果From Date 大于 To Date,则会通过说“From Date应小于To Date。!”来显示提醒。 。下面是截图,它将如何在前面的屏幕上呈现。

enter image description here

希望这对某人有所帮助。!