2013年4月5日星期五

ADF_208:InputDate组件使用指南之一:基本功能

开发运行环境:JDeveloper 11.1.2.3.0 + Oracle Database 11g Express Edition。

1. 创建表Calendar
CREATE TABLE CALENDAR 
(
  ACTIVITY_ID VARCHAR2(20) NOT NULL 
, PROVIDER VARCHAR2(20) NOT NULL 
, START_DATE DATE NOT NULL 
, END_DATE DATE NOT NULL 
, TITLE VARCHAR2(200) NOT NULL 
, CONSTRAINT CALENDAR_PK PRIMARY KEY 
  (
    ACTIVITY_ID 
  )
  ENABLE 
);
注意这里Start_Date和End_Date是Date类型。

2. 创建应用,使用ADF BC生成模型层
注意到EO和VO的StartDate和EndDate的数据类型都是Timestamp,看来ADF BC把Date类型的表字段默认使用Timestamp数据对象来表示。

3. 创建页面,拖放DataControl生成InputDate组件

4. 运行效果
(1)默认效果,注意没有时间项可以选择。


(2)在EO上设置日期的格式
Format Type: Simple Date。
Format: yyyy-MM-dd HH:mm:ss。


 再次运行,可以看到时间项选择,但是变成Inline Popup。

 保存后,在数据库中查询Calendar表,发现只有日期保存了,而时间没有保存。
 怀疑是一个Bug。
 于是把Calendar表Start_Date字段类型改为Timestamp。

再次运行,发现时间也保存到表了。

Project 下载:ADF_InputDate.7z

参考文献:
1. https://forums.oracle.com/forums/thread.jspa?threadID=1074781
2. http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_convertDateTime.html
3. http://dkleppinger.blogspot.jp/2011/09/how-to-ignore-time-component-of-date.html
4. http://maping930883.blogspot.jp/2012/08/adf148table-date.html
5. http://jobinesh.blogspot.jp/2011/08/what-you-may-need-to-know-about-data.html
6. http://oracleseeker.com/2009/12/02/adf_history_column_history_type/
7. https://cn.forums.oracle.com/forums/thread.jspa?threadID=1074781
8. https://blogs.oracle.com/shay/entry/a_timehour_selector_in_adf_fac
9. http://jdevadf.oracle.com/adf-richclient-demo/faces/components/inputDate.jspx

没有评论: