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)
<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)