Oracle MAF 的 validateDateTimeRange 标签
validateDateTimeRange tag for Oracle MAF
我正在尝试在 Oracle MAF 表单中实施 FROM
和 TO Date
验证。
在 ADF 中,我看到了类似 <af:validateDateTimeRange minimum="" maximum=""/>
的标签。 From this blog you can get more details,可以在ADF应用中实现。
但我在 Oracle MAF 中找不到这样的标签。如果你有任何 link 支持这个要求,你能建议我吗?
您需要使用值更改侦听器。 MAF
中没有等效标签
弗兰克
按照 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 should be少于迄今为止。!”。下面是屏幕截图,它将如何呈现在前台屏幕上。
希望这对某些人有所帮助!
我正在尝试在 Oracle MAF 表单中实施 FROM
和 TO Date
验证。
在 ADF 中,我看到了类似 <af:validateDateTimeRange minimum="" maximum=""/>
的标签。 From this blog you can get more details,可以在ADF应用中实现。
但我在 Oracle MAF 中找不到这样的标签。如果你有任何 link 支持这个要求,你能建议我吗?
您需要使用值更改侦听器。 MAF
中没有等效标签弗兰克
按照 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 should be少于迄今为止。!”。下面是屏幕截图,它将如何呈现在前台屏幕上。
希望这对某些人有所帮助!