我正在尝试创建多个accordionPanel
。
我试图在重复元素中包含此标记(例如c:forEach
)。
accordionPanel
渲染得很好,但我无法从一个标签切换到另一个标签。
这些是我尝试的一些代码:
<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
的标签?
答案 0 :(得分:1)
widgetVar
将p:accordion
放入ui:repeat
时会出现问题,它会生成具有不同/动态ID但不具有不同/动态widgetVar
的Accordion Panel组件当您在代码中明确指定widgetVar
时。
这基本上是Javascript对象的名称,用于访问p:accordion
的客户端Api功能。
因此,如果您没有在任何地方使用widgetVar
个p:accordion
,删除 widgetVar
属性,那么widgetVar
将动态生成。
如果您仍想使用widgetVar
,请自行提供动态名称,例如:
widgetVar="accordion_#{o.data_one}"
注意:我只在ui:repeat
上尝试了上述策略
使用:Primefaces 3.5和JSF 2.1.13及其为我工作。