2014-02-05 25 views
0

我试图创建多个accordionPanel s。 我试图在重复元素内包含此标记(例如c:forEach)。 accordionPanel呈现良好,但我无法从一个标签切换到另一个标签。PrimeFaces p:accordionPanel里面用户界面:重复或c:forEach

这些都是一些代码我想:

<ui:repeat value="#{myBackingBean.myList}" var="o"> 
    <p:accordionPanel dynamic="true" cache="true" multiple="true" widgetVar="accordion"> 
     <p:tab title="Title 1"> 
      #{o.data_one} 
     </p:tab> 
     <p:tab title="Title 2"> 
      #{o.data_two} 
     </p:tab> 
    </p:accordionPanel> 
</ui:repeat> 

而且还

<c:forEach items"${myBackingBean.myList}" var="o"> 
    <p:accordionPanel dynamic="true" cache="true" multiple="true" widgetVar="accordion"> 
     <p:tab title="Title 1"> 
      #{o.data_one} 
     </p:tab> 
     <p:tab title="Title 2"> 
      #{o.data_two} 
     </p:tab> 
    </p:accordionPanel> 
</ui:repeat> 

这两个代码产生的accordionPanel个列表,每个有两个标签。 但我无法从一个标签切换到另一个标签:如果我点击一个标签,它不会打开也不会关闭(除了最后的accordionPanel)。

值得注意的是,如果我手动添加两个或更多的accordionPanel(无JSF循环),它们就可以工作。

此外,我检查了浏览器在尝试打开/关闭标签时发送的请求。该请求我拦截像:

<?xml version="1.0" encoding="utf-8"?><partial-response><changes><update id="mainForm:tabView"><![CDATA[ 
// something that always use the id of the HTML tag of the _last_ accordionPanel 
</update></changes></partial-response> 

我怎样才能把一个<accordionPanel><ui:repeat><c:forEach>里面,这样我还可以切换accordionPanel的标签?

回答

1

及其与当你在ui:repeatp:accordionwidgetVar的问题,就会产生不同的/动态IDS手风琴面板组件,但不能用不同的/动态widgetVar当你明确指定widgetVar就像你在你的代码做的事情。

这基本上是以Javascript对象的名字来访问客户端的p:accordion的Api函数。

所以,如果你不使用的p:accordionwidgetVar s ^任何地方,删除widgetVar属性,那么widgetVar将动态地生成。

如果你还是想用widgetVar,自己给动态域名,例如:

widgetVar="accordion_#{o.data_one}" 

注:我尝试了上述策略,只有在ui:repeat
使用:Primefaces 3.5和JSF 2.1.13及其为我工作。

+0

谢谢,这个问题解决了! –