无法使用选择在primefaces数据表中选中复选框

时间:2015-03-19 12:04:33

标签: jsf checkbox primefaces datatable

我在primefaces中有一个dataTable并且希望选择多行,但是当我将鼠标悬停在它上面时复选框不会突出显示,并且在我点击时无法选中。

该复选框已启用。这是代码:

<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方法中只有一个日志,所以我可以看到方法是否被调用,即使复选框没有被选中,但它不是。

就像我说的那样,复选框都像其他所有内容一样呈现,并且它们没有像被禁用一样褪色,但它们的行为就像它们被禁用一样。我已经尝试删除styleClasses以查看它们是否以某种方式影响了事物,但它们并非如此。

我在我的项目中有其他的工作示例,从我可以看到我已经将这个dataTable设置为完全相同,但由于某种原因它不起作用。 xhtml具有相同的ui:compposition和相同的outputStylesheets和outputScripts作为这些其他页面和相同的基本布局,所以我确信我从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>

任何建议表示赞赏。

由于

1 个答案:

答案 0 :(得分:3)

然后,删除列中呈现的标记应允许您选中复选框。我认为这是因为它删除了表的顶部和切换所有复选框导致其余部分无声地失败