1

我正在尝试创建一个动态选项卡,其中从主选项卡中选择一行会动态创建一个选项卡并添加到 Primefaces TabView 而不离开主应用程序页面。我正在为主选项卡使用母版页(例如 countryMaster.xhtml),并为详细选项卡选择的每一行重新使用详细信息页(例如:countryDetail.xhtml)。

我想创建一个基于 ViewScope 的自定义“TabScope”自定义范围,其中我可以将详细选项卡的 tabId 绑定到支持 bean 并存储在 ViewMap 中。

  1. 我怎样才能做到这一点?
  2. 这可能吗?
  3. 如何获取使用支持 bean 实例的选项卡的 tabId?

谢谢!!

前任:

public class TabScope implements Scope {

    public Object get(String name, ObjectFactory objectFactory) {


    Map<String,Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();  



        String tabId = null;
        //Get tabId that uses this backing bean


        if (tabId != null) {
            if (viewMap.containsKey(name)) {
                final Object object = viewMap.get(name);
                if (object instanceof Map<?, ?>) {
                    final Map<String, Object> mapObject = (Map<String, Object>) object;

                    if (mapObject.containsKey(tabId)) {
                        return mapObject.get(tabId);
                    }                   
                }               
            }   
            Object object = objectFactory.getObject();

            Map<String, Object> tabIdBeanMap = new HashMap<String, Object>(1);              
            tabIdBeanMap.put(tabId, object);

            viewMap.put(name, tabIdBeanMap);

            return object;
        } else {
            String message = "TabId not found.";
            facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, null));

            return null;
        }       
    }
4

0 回答 0