您的位置:首页 > 其它

使用Input Text with LOV + Transient Attribute 实现显示名称保存ID

2014-08-20 21:01 155 查看
开发环境:JDevloper 11.1.2.1.0+ Oracle Database 10g Express Edition 10.2.0.1。

在上一个文章中,实现的方法是基于多个EO创建一个新VO,然后基于名称字段建立LOV。

有些开发人员不喜欢这种方式,因为使用了多个EO,觉得不够简明。

在本实验中,我在原有的VO上添加了一个临时字段(Transient Attribute):JobTitle。

通过Override VO的Row Impl类的GetJobTitle方法来实现显示名称保存ID。

以下是重点步骤说明:

1. 在EmployeesView上增加Transient Attribute:JobTitle

注意,这里要把Updatable改为Always,否则显示在页面上时,该字段为只读状态。





2. 为JobTitle设置LOV

(1)





(2)





(3)





3. 定制并生成EmployeesViewRowImpl.java





重写getJobTitle方法,把内容从

/**

* Gets the attribute value for the calculated attribute JobTitle.

* @return the JobTitle

*/

public String getJobTitle() {

return (String) getAttributeInternal(JOBTITLE);

}

改成

public String getJobTitle() {

Object jobId = getAttributeInternal(JOBID);

String jobTitle = null;

if (jobId != null) {

Object[] obj = { jobId };

Key key = new Key(obj);

Row[] rows = getJobsView1().findByKey(key, 1);

if (rows != null && rows.length > 0) {

jobTitle = (String)rows[0].getAttribute(1);

}

}

return jobTitle;

}

注意,这里因为JobTitle在JobsView中是第2个Attribute,所以这里使用的是getAttribute(1)。

Project 下载:ADF_LOV_InputText_TransientName.7z
http://maping930883.blogspot.com/2012/08/adf184input-text-with-lov-transient.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐