以下代码是数据表,基于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}")
,以便它符合我的要求。
答案 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。