新的起点 新的开始

快乐生活 !

ADF(ORACLE JEE 平台)中Table的显示detail功能的使用

        ADF(Application development Framework)是Oracle主推的JEE平台的解决方案,其中包括JDeveloper (开发IDE),Weblogic(Server 容器),ADF Faces(JSF 实现), ADF richFaces(JSF 中扩展组件)等等。
本文主要讨论ADF Faces中,如何控制显示Table的Details信息。

        ADF Table类似于JSF标准的Table,但提供许多更有用的功能。比如显示Datail就是很好的功能,如下图:用户可以点击首列小图表,查看本行详细信息
      


如下图显示:

下面是相对应的JSP和BackingBean

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://xmlns.oracle.com/adf/faces" prefix="af"%>
<%@ taglib uri="http://xmlns.oracle.com/adf/faces/html" prefix="afh"%>
<f:view>
  
<afh:html>
    
<afh:head title="tableTest">
      
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
      
<style type="text/css">
      body 
{
}

      a:link 
{ color: #ffa5a5; }
    
</style>
    
</afh:head>
    
<afh:body>
      
<h:form>
        
<af:table width="98%" value="#{tableTest.allData}" var="data"
                  emptyText
="No Data"
                  disclosureListener="#{tableTest.showDetails}"
 banding="none"
                  varStatus
="vs">
          
<af:column sortable="true" formatType="icon"
                     inlineStyle
="border-color:rgb(0,0,0); border-width:thin; margin:auto; text-align:center;">
            
<f:facet name="header">
              
<af:outputText value="NO."/>
            
</f:facet>
            
<af:outputText value="#{data.column1}"/>
          
</af:column>
          
<af:column  inlineStyle="border-color:rgb(0,0,0); border-width:thin; margin:auto; text-align:center;">
            
<f:facet name="header">
              
<af:outputText value="Last Name"/>
            
</f:facet>
            
<af:outputText value="#{data.column2}"/>
          
</af:column>
          
<af:column  inlineStyle="border-color:rgb(0,0,0); border-width:thin; margin:auto; text-align:center;">
            
<f:facet name="header">
              
<af:outputText value="First Name"/>
            
</f:facet>
            
<af:outputText value="#{data.column3}"/>
          
</af:column>
          <f:facet name="detailStamp">
            <af:panelGroup layout="vertical">
              <af:outputText rendered="#{tableTest.showDetail}"
                             value="#{data.detail}"/>
               <af:outputText rendered="#{tableTest.showDetail}"
                             value="#{data.detail}"/>
                <af:outputText rendered="#{tableTest.showDetail}"
                             value="#{data.detail}"/>

            
</af:panelGroup>
          
</f:facet>
        
</af:table>
      
</h:form>
    
</afh:body>
  
</afh:html>
</f:view>

其中红色部分JSP就是显示Details信息。
disclosureListener="#{tableTest.showDetails}" 为Table加一个打开关闭Details信息的监听器,在监听器里面控制显示。

BackBean如下:

public class TableDataBackBean {
    
private List allData = new ArrayList();
    
private boolean showDetail = false
    
public TableDataBackBean() {
        TableData tableDate1 
= new TableData("1","vincent","ma","vincent ma'detail");
        TableData tableDate2 
= new TableData("2","barry","fan","barry fan'detail");
        TableData tableDate3 
= new TableData("3","jeny","chen","jeny chen'detail");
        TableData tableDate4 
= new TableData("4","ross","han","ross han'detail");
        TableData tableDate5 
= new TableData("5","robin","liu","robin liu'detail");
        TableData tableDate6 
= new TableData("6","walker","liu","walker liu'detail");
        allData.add(tableDate1);
        allData.add(tableDate2);
        allData.add(tableDate3);
        allData.add(tableDate4);
        allData.add(tableDate5);
        allData.add(tableDate6);

    
    }


    public void showDetails(DisclosureEvent disclosureEvent) {
        if(disclosureEvent.isExpanded()){
          this.showDetail = true;
          }

    }


    
public void setAllData(List allData) {
        
this.allData = allData;
    }


    
public List getAllData() {
        
return allData;
    }


    
public void setShowDetail(boolean showDetail) {
        
this.showDetail = showDetail;
    }


    
public boolean isShowDetail() {
        
return showDetail;
    }

}

当用户点击打开小图标时,触发如下事件:
    public void showDetails(DisclosureEvent disclosureEvent) {
        if(disclosureEvent.isExpanded()){
          this.showDetail = true;
          }
    }


那么,如何只让它显示一个Detail 信息呢? 也就是打开第二个时,关闭第一个呢? 很简单
修改showDetails方法如下:
    public String oldValue = "";
    
public void showDetails(DisclosureEvent disclosureEvent) {
        CoreTable activityTable1 
= (CoreTable)disclosureEvent.getComponent();
        
if(disclosureEvent.isExpanded()){
          
this.showDetail = true;
          }

          
        RowKeySet rowKeySet2  
= activityTable1.getDisclosureState();
          Set set 
=rowKeySet2.getKeySet();
          Iterator iterator 
= set.iterator();
          
if(set.size()==2){
             
while(iterator.hasNext()){
              String temp 
= (String)iterator.next();
                 System.out.println(
"Old Value:"+oldValue);
              System.out.println(
"Two value:"+temp);
              
if(!temp.equals(oldValue)){
                  oldValue 
= temp;
                  System.out.println(
"Set Older Value ="+temp);
                  
break;
              }

             }

             set.clear();
             set.add(
new String(oldValue));
             System.out.println(
"Display:"+oldValue);
          }
else if(set.size()==1){
              
while(iterator.hasNext()){
               String temp 
= (String)iterator.next();
                   oldValue 
= temp;
              }

              set.add(
new String(oldValue));
              System.out.println(
"only One Display:"+oldValue);
          }


          
         activityTable1.setDisclosureState(rowKeySet2);
    }

posted on 2009-08-02 21:00 advincenting 阅读(1645) 评论(1)   编辑   收藏

公告

Locations of visitors to this page

导航

  • BlogJava
  • 首页
  • 新随笔
  • 联系
  • 聚合
  • 管理
<2009年8月 >
2627282930311
2345 678
9 10 11 12 1314 15
16 171819202122
23242526272829
303112345

统计

  • 随笔 - 184
  • 文章 - 13
  • 评论 - 226
  • 引用 - 0

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(13)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(71)

  • English (rss)
  • java EE(8) (rss)
  • JSF/ADF(3) (rss)
  • Linux 相关(5) (rss)
  • Mobile(3) (rss)
  • OO设计(4) (rss)
  • 数据库相关(11) (rss)
  • 服务器 比如:WebLogic(Develop+Deploy)(4) (rss)
  • 生活随笔(25) (rss)
  • 脚本(8) (rss)

随笔档案(179)

  • 2013年11月 (1)
  • 2012年12月 (2)
  • 2012年11月 (4)
  • 2012年10月 (1)
  • 2012年9月 (2)
  • 2012年8月 (2)
  • 2012年7月 (5)
  • 2011年11月 (1)
  • 2010年4月 (3)
  • 2010年2月 (2)
  • 2010年1月 (4)
  • 2009年12月 (1)
  • 2009年11月 (1)
  • 2009年10月 (1)
  • 2009年8月 (8)
  • 2009年7月 (10)
  • 2009年6月 (1)
  • 2009年5月 (6)
  • 2009年4月 (16)
  • 2009年3月 (3)
  • 2009年2月 (1)
  • 2008年9月 (4)
  • 2008年8月 (5)
  • 2008年7月 (5)
  • 2007年12月 (7)
  • 2007年11月 (8)
  • 2007年10月 (4)
  • 2007年9月 (9)
  • 2007年8月 (2)
  • 2007年7月 (5)
  • 2007年6月 (2)
  • 2007年5月 (3)
  • 2007年4月 (23)
  • 2007年3月 (27)

文章档案(13)

  • 2007年7月 (5)
  • 2007年6月 (2)
  • 2007年5月 (1)
  • 2007年4月 (1)
  • 2007年3月 (4)

新闻分类

  • 军事 (rss)
  • 娱乐 (rss)
  • 政策 (rss)
  • 科技 (rss)

IT人的英语学习网站

  • JAVA 实例
  • JAVA API

JAVA站点

  • BEA
  • IBM DeveloperWorks
  • JAVA WORLD

优秀个人博客链接

官网学习站点

生活工作站点

最新随笔

  • 1. JQuery Select 操作
  • 2. java 性能调优之-快速定位引起内存泄露的代码
  • 3. java 性能调优之-快速定位消耗CPU的Java线程
  • 4. 在Oracle 11g中安装Demo 数据库
  • 5. 在Weblogic上创建ADF运行的Domain
  • 6. developer 眼中的性能问题
  • 7. 在ADF中跟踪SQL执行时间
  • 8. ADF 发布Android IOS 开发平台
  • 9. ADF 介绍
  • 10. 列转行 聚合的简单实现 ORACLE WM_CONCAT LISTAGG 函数

搜索

  •  

积分与排名

  • 积分 - 335010
  • 排名 - 165

最新评论

  • 1. re: FireBug 调试JS入门 —如何调试JS
  • @ZengJerry
    同感
  • --舒健
  • 2. re: Java异常框架设计
  • 评论内容较长,点击标题查看
  • --zuidaima
  • 3. re: JQuery Select 操作
  • 000
  • --12我
  • 4. re: JQuery Select 操作
  • 11111111111111
  • --12我
  • 5. re: under the hood 中文意思
  • 评论内容较长,点击标题查看
  • --leifeng

阅读排行榜

  • 1. FireBug 调试JS入门 —如何调试JS(54041)
  • 2. 深入浅出Java多线程(1)-方法 join(27474)
  • 3. 通过ClassLoader说明容器热部署实现机制(11444)
  • 4. 深入浅出多线程(4)对CachedThreadPool OutOfMemoryError问题的一些想法(7888)
  • 5. under the hood 中文意思(7601)

评论排行榜

  • 1. FireBug 调试JS入门 —如何调试JS(19)
  • 2. 深入浅出Java多线程(1)-方法 join(13)
  • 3. JDK1.6 集合类 UML 图, 更好的使用Collection类(11)
  • 4. 请正则表达式高手给出更好的解决方案(11)
  • 5. JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧(10)

PHP网站源码网站按天优化平凉网站优化价格廊坊放心的网站优化推广双牌县网站seo优化排名莱芜网站优化公司手机网站优化排名深圳怎么找网站优化经验榕江网站seo优化许昌网站关键词优化排名哪家好优化网站结构长宁区公司官方网站优化方案宿州网站优化百万流量网站前端优化网站排名优化忄金苹果下拉讠网站优化关键词不需要优化的页面网站地图价格实惠的网站优化云南网站seo优化中介百度怎么优化网站关键词排名淮安网络营销网站优化是真的吗网站做优化怀化网站优化收费佛山网站自然优化天空之大网站seo优化唐山专业的网站优化哪里不错湖北网站快照优化技巧红谷滩新区网站优化的公司郑州搜索引擎营销的网站优化思路网站优化培训机构稳定的网站优化代理渠道歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化