您的位置:首页 > 其它

让PanelTabbed组件在页面刷新时保持当前打开的项

2015-04-13 16:08 369 查看

概述

在ADF开发中,我们发现PanelTabbed组件在页面刷新时会回到第一个Tab项,然而这可能并不是我们想要的结果。

分析

通过观察我们很容易发现,控制ShowDetailItem打开的属性就是disclosed。那么我们只要在选择Tab项的时候动态的设置disclosed属性,并且把这个状态保留下来,即可达到刷新页面的时候不会出现前文所描述的情况。

如何动态的设置disclosed的属性呢,继续观察,我们发现ShowDetailItem中还有个disclosureListener属性。这个监听方法会执行两次,第一次是关闭上一个Tab页,第二次则是打开现在的Tab页,我们只要捕捉到现在打开的这个Tab页,保存下来就好了。

具体实现参照代码。

代码

ShowDetailItemBean.java

[java] view
plaincopy





public class ShowDetailItemBean implements Serializable {

private static final ADFLogger logger = ADFLogger.createADFLogger(ShowDetailItemBean.class);

private String expandedItemId;

public ShowDetailItemBean() {

super();

}

public void onDisclosure(DisclosureEvent event) {

boolean isExpanded = event.isExpanded();

if(isExpanded) {

String id = event.getComponent().getId();

setExpandedItemId(id);

logger.info("Expended item id : " + id);

}

}

public void setExpandedItemId(String expandedItemId) {

this.expandedItemId = expandedItemId;

}

public String getExpandedItemId() {

return expandedItemId;

}

}

页面设置,disclosureListener,disclosed

[html] view
plaincopy





<af:showDetailItem text="showDetailItem 1" id="sdi1"

disclosureListener="#{pageFlowScope.panelTabbedItemBean.onDisclosure}"

disclosed="#{pageFlowScope.panelTabbedItemBean.expandedItemId == 'sdi1'}">

<af:commandButton text="commandButton 1" id="cb1"/>

</af:showDetailItem>

转自:http://blog.csdn.net/ygj26/article/details/21617717
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐