簡體   English   中英

ui:repeat或c:forEach中的PrimeFaces p:accordionPanel

[英]PrimeFaces p:accordionPanel inside ui:repeat or c:forEach

我正在嘗試創建多個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的選項卡?

當您將p:accordion放在ui:repeat ,這是widgetVar的問題,當您像在代碼中那樣顯式指定widgetVar時,它將生成具有不同/動態Id而不是具有不同/動態widgetVar Accordion Panel組件。

基本上是Javascript Object的名稱,用於訪問p:accordion的客戶端Api函數。

所以,如果你不使用widgetVarp:accordion小號的任何地方, 刪除 widgetVar屬性,那么widgetVar將動態地生成。

如果仍要使用widgetVar ,請自己給動態名稱,例如:

widgetVar="accordion_#{o.data_one}" 

注意:我僅在ui:repeat上嘗試了上述策略。
使用:Primefaces 3.5和JSF 2.1.13及其對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM