选择模式单个和多个相同的DataTable

时间:2011-05-16 06:46:18

标签: java jsf primefaces

以下代码是数据表,基于Qustion类型(Question对象的属性),用户可以选择一个选项或多个选项。

<p:dataTable id="optTable" value="#{indexBean.currentQuestion.options}" var="opt"
                                         selection="#{indexBean.currentQuestion.selectedOpt}"  >

                                <p:column  selectionMode="single" rendered="#{indexBean.currentQuestion.question.selectionMode eq 'single'}" />
                                <p:column selectionMode="multiple" rendered="#{indexBean.currentQuestion.question.selectionMode eq 'multiple'}" />

我的问题是如何在indexbean中声明 selectedOpt (selection="#{indexBean.currentQuestion.selectedOpt}"),以便它符合我的要求。

2 个答案:

答案 0 :(得分:1)

我不确定您要通过制作一列单选模式和另一种多选模式来实现目标。

dataTable具有属性selectionMode,列标签没有这样的属性(至少不是2.2.1)。

有关如何使用dataTable的示例,请参阅Primefaces Showcase,http://www.primefaces.org/showcase/ui/datatableRowSelectionSingle.jsf

答案 1 :(得分:1)

在此示例中使用 columnGroup

<p:dataTable  resizableColumns="false" id="multiTasks" var="task" rowStyleClass="#{task.id le 10 ? 'green' : (task.id le 20 ? 'yellow' : 'red')}" value="#{taskController.subjects}" rowKey="#{task.name}">   
                            <p:columnGroup type="header">
                                <p:row>
                                    <p:column headerText="Operations" />  
                                    <p:column headerText="Name fragment" />  
                                    <p:column headerText="View fragment" />  
                                    <p:column headerText="Consistency" />  
                                </p:row>
                            </p:columnGroup>
                            <p:column rendered="#{task.id le 10}" selectionMode="multiple" style="width:2%; text-align: center;" styleClass="text-right" />  
                            <p:column rendered="#{task.id gt 10 and task.id le 20 }" style="width:2%; text-align: center;" >
                                   <a href="activityForm.html">Recover this fragment</a>
                            </p:column>
                            <p:column rendered="#{task.id gt 20 }" style="width:2%; text-align: center;" >
                               ---
                            </p:column>
                            <p:column id="nameTask" sortBy="#{task.name}" filterBy="#{task.name}" >
                                #{task.name}"
                            </p:column>   
                            <p:column id="viewFragment" style="text-align: center;" sortBy="#{task.name}" filterBy="#{task.name}" >
                                <p:button id="btnView" icon="ui-icon-search"></p:button>
                            </p:column>   
                            <p:column id="percentageConsistency"  sortBy="#{task.name}" filterBy="#{task.name}" >
                                #{(task.id le 10 ? '75%':(task.id le 20 ? '50%' : '25%'))}"
                            </p:column>

                        </p:dataTable> 

这有效:D。