Jsf 无法使用选择在primefaces数据表中选择复选框
我在primefaces中有一个dataTable,希望选择多行,但当我将鼠标悬停在该复选框上时,该复选框不会突出显示,并且在单击时无法选中 该复选框肯定已启用。代码如下:Jsf 无法使用选择在primefaces数据表中选择复选框,jsf,checkbox,primefaces,datatable,Jsf,Checkbox,Primefaces,Datatable,我在primefaces中有一个dataTable,希望选择多行,但当我将鼠标悬停在该复选框上时,该复选框不会突出显示,并且在单击时无法选中 该复选框肯定已启用。代码如下: <p:dataTable id="deferDatatable2" value="#{deferMaintenanceTasksBean.tasksList}" var="tasks" rowKey="tasks.jobId"
<p:dataTable id="deferDatatable2"
value="#{deferMaintenanceTasksBean.tasksList}"
var="tasks"
rowKey="tasks.jobId"
selection="#{deferMaintenanceTasksBean.maintenanceTaskDatas}"
styleClass="editable-datatable" >
<p:ajax event="toggleSelect"
listener="#{deferMaintenanceTasksBean.toggleSelect()}" />
<p:ajax event="rowSelectCheckbox"
update="deferDatatable2" />
<p:ajax event="rowUnselectCheckbox"
update="deferDatatable2" />
<p:ajax event="rowSelect"
update="deferDatatable2" />
<p:ajax event="rowUnselect"
update="deferDatatable2" />
<p:column styleClass="select-column"
rendered="#{tasks.task.deferrable == 'true'}"
selectionMode="multiple" >
</p:column>
<p:column headerText="Task Code"
rendered="#{tasks.task.deferrable == 'true'}">
<h:outputText value="#{tasks.task.taskCode}" />
</p:column>
<p:column headerText="Job Code"
rendered="#{tasks.task.deferrable == 'true'}">
<h:outputText value="#{tasks.jobCode.code}" />
</p:column>
<p:column headerText="Description"
rendered="#{tasks.task.deferrable == 'true'}">
<h:outputText value="#{tasks.task.description}" />
</p:column>
<p:column headerText="Safety Critical"
rendered="#{tasks.task.deferrable == 'true'}">
<p:selectBooleanCheckbox value="#{tasks.task.safetyCritical}"
disabled="true" />
</p:column>
<p:column headerText="Deferrable?"
rendered="#{tasks.task.deferrable == 'true'}">
<p:selectBooleanCheckbox value="#{tasks.task.deferrable}"
disabled="true" />
</p:column>
<p:column headerText="Att."
rendered="#{tasks.task.deferrable == 'true'}">
<h:outputText id="i4AttachmentOutLbl"
value="#{tasks.task.attachmentCount}" />
</p:column>
</p:dataTable>
在toggleSelect方法中只有一个日志,这样我就可以看到该方法是否正在被调用,即使没有选中复选框,但它没有被调用
正如我所说,复选框的渲染方式与其他方式相同,它们不会像禁用一样褪色,但它们的行为方式却像禁用一样。我试图删除样式类,看看它们是否以某种方式影响了事情,但事实并非如此
在我的项目中,我有其他这样的工作示例,从我所看到的,我已经将这个数据表设置为完全相同的,但由于某些原因,它不工作。xhtml具有与其他页面相同的ui:compposition、相同的OutputStylesheet和OutputScript,以及相同的基本布局,因此我确信我从dataTable中遗漏了一些东西,但不知道遗漏了什么
我添加了一个小测试表,如下所示,其中包含一个名为testList的字符串列表,这很有效。不知道为什么会这样
<p:dataTable id="testTable"
value="#{deferMaintenanceTasksBean.testList}"
var="test"
rowKey="test"
selection="#{deferMaintenanceTasksBean.testListSelect}">
<p:ajax event="toggleSelect"
listener="#{deferMaintenanceTasksBean.toggleSelect(1)}" />
<p:ajax event="rowSelectCheckbox"
update="testTable" />
<p:ajax event="rowUnselectCheckbox"
update="testTable" />
<p:ajax event="rowSelect"
update="testTable" />
<p:ajax event="rowUnselect"
update="testTable" />
<p:column selectionMode="multiple" />
<p:column>
<h:outputText value="#{test}" />
</p:column>
</p:dataTable>
如有任何建议,我们将不胜感激
谢谢删除列中呈现的标记后,您可以选择复选框。我认为这是因为它删除了表的顶部和“全部切换”复选框,导致其余部分以静默方式失败删除列中呈现的标记后,应允许您选择复选框。我认为这是因为它删除了表的顶部和“全部切换”复选框,导致其余部分以静默方式失败删除列中呈现的标记后,应允许您选择复选框。我认为这是因为它删除了表的顶部和“全部切换”复选框,导致其余部分以静默方式失败删除列中呈现的标记后,应允许您选择复选框。我猜想这是因为它删除了表的顶部和“全部切换”复选框,导致其余部分以静默方式失败我刚刚在行键周围添加了{},因为它丢失了,但没有任何区别。您的数据表是否嵌套在h:form中?是的,在表单中。我也尝试过将其放入面板和输出面板中,使其无效。为什么要有条件地呈现selectionMode=multiple的列?我已经有过两次类似的问题,这里不是这样的,但我为复选框不起作用的其他人编写了这篇文章。另外,请确保在和中没有selectionMode=multiple,否则它会中断。我刚刚在行键周围添加了{},因为它丢失了,但没有区别。您的数据表嵌套在h:窗体中吗?是的,在窗体中。我也尝试过将其放入面板和输出面板中,使其无效。为什么要有条件地呈现selectionMode=multiple的列?我已经有过两次类似的问题,这里不是这样的,但我为复选框不起作用的其他人编写了这篇文章。另外,请确保在和中没有selectionMode=multiple,否则它会中断。我刚刚在行键周围添加了{},因为它丢失了,但没有区别。您的数据表嵌套在h:窗体中吗?是的,在窗体中。我也尝试过将其放入面板和输出面板中,使其无效。为什么要有条件地呈现selectionMode=multiple的列?我已经有过两次类似的问题,这里不是这样的,但我为复选框不起作用的其他人编写了这篇文章。另外,请确保在和中没有selectionMode=multiple,否则它会中断。我刚刚在行键周围添加了{},因为它丢失了,但没有区别。您的数据表嵌套在h:窗体中吗?是的,在窗体中。我也尝试过将其放入面板和输出面板中,使其无效。为什么要有条件地呈现selectionMode=multiple的列?我已经有过两次类似的问题,这里不是这样的,但我为复选框不起作用的其他人编写了这篇文章。另外,请确保和中没有selectionMode=multiple,否则它会中断。