如何将服务器端和客户端的tabview组件与jsf进行匹配?

时间:2012-11-14 08:00:46

标签: jsf primefaces

我有以下两个问题;

我的页面左侧有一个菜单和子菜单,页面中心有一个Tabview。当点击进入menuItem时,我用动态的javascript将tab添加到tabview 但是我无法从支持bean获得tabview的标签。在添加javascript之前,我只能阅读第一个标签。 所以我想同步匹配服务器端和客户端的tabview。

我该怎么做?

和第二; 当我关闭tab时,我在onTabClos​​e方法中使用TabClos​​eEvent但事件始终为null。也许它将通过与服务器和客户端匹配的tabview来解决 我不知道。

代码如下。

请告诉我。

感谢..

xhtml代码:     
            

<p:menuitem value="#{itemMenu.menuAck}" 
            action="#{MenuBean.OpenPage(itemMenu.pageName)}" 
            ajax="true"
            oncomplete="handleTabViewEvent(args);" />

<script type="text/javascript">
   function handleTabViewEvent(args) {
       alert('Add tab here..');
    }
</script>

bean代码:

public void OpenPage(String pageName) {
     String s = "Divert to handleTabViewEvent function";
}

public void onTabClose(TabCloseEvent event) {  
     FacesContext context = FacesContext.getCurrentInstance();
     TabView tw = (TabView)context.getViewRoot().findComponent("centerForm:tw");
     String s = "I must delete tab here from tw which closed. 
                 But event does not give me tab information. It is always null. And tw has old values";
}

1 个答案:

答案 0 :(得分:0)

  

我使用javascript动态地将标签添加到tabview

这首先是完全错误的。

您需要使用JSF而不是使用JS添加选项卡。现在,JSF完全没有意识到已更改的客户端状态,并且永远不会知道新选项卡。任何解决方法最终都会比JSF而不是JS更难以维护和维护。

另见: