该网络应用程序,我的发展中使用MyFaces2.0.3/PrimeFaces2.2RC2分成内容和导航区域。在航行领域,其中包括为多个网页使用的模板(即 <ui:define>),还有一些部件(例如导航树、可折叠板等。) 我想要保护成分的状态跨景。

例如,我们说我的主页上。在我浏览产品的细节页上通过点击在产品的导航树,我的代码中触发一向使用

navigationHandler.handleNavigation(context, null,
  "/detailspage.jsf?faces-redirect=true")

另一种方式获得的详细信息,网页将通过直接击在产品的预告片,显示在主页。相应的 <h:link> 会导致我们的详细信息的网页。

在这两种情况下,扩大状态我的导航树(a PrimeFaces树的成分)和我可折叠板丢失。我明白这是因为在重定向/ h:link 结果,在创造一个新的视图。

什么是最好的方式来处理这个吗?我已经在使用MyFaces团在我的项目与其对话范围,但我不知道如果这是任何帮助在这里(因为我必须要结合扩展/崩溃状态的部件衬豆...但据我所知,这是不可能的)。是否有一个方式告诉JSF其部件的国家传播到下一看,假定,同样组分存在的看法?

我想我可能需要一个指向正确的方向在这里。谢谢!


更新1: 我只是试图结合小组和树一届会议范围内的豆,但这似乎没有任何效果。还有,我猜我会必须结合所有儿童的部件(如果有的话)手动,因此这似乎不喜欢的路要走。

更新2: 结合用户界面组件的非请求的范围豆类不是一个好的想法(见我贴在评论下文)。如果没有容易的方法,我可能必须进行如下:

  • 当一个面板倒塌或树被扩展,节省当前所处的状态一届会议范围内支持bean(!= 的用户界面组件本身)
  • 组件的国家都存储在一张地图。地图是关键构成部分(希望)独特的相对身份证。我不能使用的整个绝对的成分的道路在这里,由于IDs的父命名的容器可能会改变如果景的变化,假定这些标识所产生的编程方式。
  • 尽快作为一个新观点得到建造、检索该组件的国家从地图上,并将它们应用的组件。例如,在情况下的面板,我可以设置 collapsed 属性的一个值从我的话范围的背豆。

更新3: 我得到了它的工作如上所述。总的来说,解决办法是存储相关的属性,在一届会议范围内的豆,而不是使整个UIComponent届会议的范围。然后,当件是重新建造后的导航已经发生时,设定的属性值,通过检索所保存的性质(使用EL),例如

<p:panel collapsed="#{backingBean.collapsedState}" ... />

(这是一个简化例子。因为我使用多个面板,我使用一个地图存储这些特性,如上所述)。

有帮助吗?

解决方案

一个解决办法是使用会议范围内的豆。

其他提示

你的意思是可折叠的面板?我问是因为有一个组件,可关闭以及一个组成部分。我使用在导航格在我的项目。该accordianPanel有一个属性命名为"activeIndex".这里是我在做我的sessionBean维持的状态我的手风琴标签:

 private int tabIndex; //declared a private variable

    public SessionBean() {
       tabIndex = 100; //set the initial tab index to 100 so all tabs are closed when page loads.
    }

    public int getTabIndex(){
       return tabIndex;
    }

    public void setTabIndex(int tabIndex){
       this.tabIndex=tabIndex;
    }

in my navigation pane:



<p:accordionPanel activeIndex="#{sessionBean.tabIndex}" collapsible="true" autoHeight="false">
    <p:tab title="#{tab1_title}">
       <h:commandLink value="link here" action="target_page?faces-redirect=true" /><br/>
    </p:tab>
    <p:tab title="#{tab2_title}">
       <h:commandLink value="link here" action="target_page?faces-redirect=true" />
    </p:tab>
    <p:tab title="#{tab3_title}">
       <h:commandLink value="link here" action="target_page?faces-redirect=true" />
    </p:tab>
 </p:accordionPanel>

我不用在树件进行导航,提出了我的项目与一些困难,很容易克服通过使用accordionPanel,所以我不能说话的那部分你的导航。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top