【问题标题】:Primefaces TabView with composite component as tabsPrimefaces TabView 与复合组件作为选项卡
【发布时间】:2014-12-30 03:10:46
【问题描述】:

我想使用 PrimeFaces TabView 组件在选项卡中显示来自我们服务器的数据。我需要三个选项卡来显示三个具有不同数据的表。

如果我写,它会起作用:

<p:tabView>
  <p:tab>
    // <p:dataTable> logic comes here
  </p:tab>
  <p:tab>
    // and here
  </p:tab>
</p:tabView>

我的问题是每个选项卡的 dataTable 逻辑或多或少都相同。我不喜欢这种代码重复,所以我想创建一个自定义选项卡,其工作方式如下:

summary.xhtml

<p:tabView>
  <my:customTab dataToDisplay="#{myBean.dataSet1}">
  <my:customTab dataToDisplay="#{myBean.dataSet2}">
</p:tabView>

但到目前为止,我还没有成功实现一个正在工作的复合组件。我的方法是使用此代码创建一个单独的 customTab.xhtml 文件

customTab.xhtml

<ui:composition // namespace definitions
    ... >
  <composite:interface>
    <composite:attribute name="dataToDisplay" />
  </composite:interface>
  <composite:implementation>
    <p:tabView>
      // dataTable logic comes here
    </p:tabView>
  </composite:implementation>
</ui:composition>

但是,tabView 组件不会显示任何选项卡。可能是这种情况,因为 JSF 将为每个 my:customTab-Tag 绘制一个单独的组件。这样tabView 将不会看到my:customTab 中有一个p:tab。我需要做什么才能让 TabView 识别 my:customTab 中的 p:tab ?

【问题讨论】:

  • 将组件注入primefaces组件确实是一项危险的任务,您需要使用包内的代码重新编译primefaces。 @ktwo 建议可能是一个更好/更有效的建议 - 这就是我们所做的,事实上我们甚至在某些选项卡中使用了相同的数据只是新表。还使用 TabModel 来做选项卡,而不是一一列出它们
  • 我也有同样的问题。页面之间的数据可以使用@RequestScoped 传递,除非没有ajax 请求。我想发表评论,但我不能。 I got it from here。如果我错了,请纠正我。

标签: jsf primefaces tabview


【解决方案1】:
    <p:tabView>
      <p:tab>
          <ui:include src="datatabletemplate.xhtml">
             <ui:param name="data" value="#{data1}"/>
          </ui:include>
      </p:tab>
      <p:tab>
        <ui:include src="datatabletemplate.xhtml">
             <ui:param name="data" value="#{data2}"/>
          </ui:include>
      </p:tab>
      <p:tab>
         <ui:include src="datatabletemplate.xhtml">
             <ui:param name="data" value="#{data3}"/>
          </ui:include>
      </p:tab>
    </p:tabView>

我认为这将是解决问题的快速简便的方法。如果没有自定义组件,#{data1} 可以是整个 bean,也可以只是数据表的值(或者您也可以添加更多参数)

【讨论】:

    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 2013-04-17
    • 2017-03-14
    • 2015-10-18
    • 2019-11-17
    • 2013-04-02
    • 2015-12-20
    • 1970-01-01
    相关资源
    最近更新 更多