如何获取PrimeFaces轮播的当前索引?

bal*_*nse 2 jsf primefaces jsf-2

我有一个PrimeFaces轮播,我想在其中显示一个可编辑的inputTextArea.不幸的是,似乎p:carousel没有获取当前索引的属性,比如p:dataGrid中的rowIndexVar.

什么是其他解决方案只渲染当前inputTextarea?

        <p:carousel value="#{infb.infos}" var="info" **rowIndexVar="status"** numVisible="2" >
                ......
                        <p:inputTextarea value="#{infb.textArea1}" rendered="#{status == 0 and infb.displayEditor}" />
                        <p:inputTextarea value="#{infb.textArea2}" rendered="#{status == 1 and infb.displayEditor}" />
                        <p:inputTextarea value="#{infb.textArea3}" rendered="#{status == 2 and infb.displayEditor}" />
                        <p:inputTextarea value="#{infb.textArea4}" rendered="#{status == 3 and infb.displayEditor}" />
                        <h:panelGrid rendered="#{infb.displayEditor}" columns="2">
                            <p:commandButton value="Save" action="#{infb.modifyInfoText(info)}" />
                            <p:commandButton value="Cancel" action="#{infb.cancelModifyInfoText(info)}"/>  
                        </h:panelGrid>
                 .....
        </p:carousel>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 5

<p:carousel>工具UIData(如<p:dataTable>,<p:dataGrid>等).该组件类具有rowIndex属性.你可以直接抓住它.

首先将<p:carousel>组件绑定到EL中的唯一变量名称(绝对不要将其绑定到bean属性!):

<p:carousel binding="#{carousel}" ...>
Run Code Online (Sandbox Code Playgroud)

组件实例将在同一页面的其他位置通过#{carousel}.然后你可以rowIndex像这样访问它的属性#{carousel.rowIndex}.

<p:carousel binding="#{carousel}" ...>
    <p:inputTextarea ... rendered="#{carousel.rowIndex eq 0}" />
    <p:inputTextarea ... rendered="#{carousel.rowIndex eq 1}" />
    <p:inputTextarea ... rendered="#{carousel.rowIndex eq 2}" />
    <p:inputTextarea ... rendered="#{carousel.rowIndex eq 3}" />
    ...
</p:carousel>
Run Code Online (Sandbox Code Playgroud)

具体问题无关,这很可疑.为什么不将textarea值绑定到当前迭代的行而不是bean?

<p:carousel ... var="item">
    <p:inputTextarea value="#{item.text}" />
    ...
</p:carousel>
Run Code Online (Sandbox Code Playgroud)