primefaces数据表启动后选择的所有行

时间:2013-12-10 20:03:14

标签: jsf jsf-2 primefaces datatable

运行页面时,我的DataTable出现问题,所有行都是自动选中的。有人能告诉我问题出在哪里吗?我不知道如何解决这个问题..

我的数据表页面

<ui:composition template="../lecturerTemplates/layout.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    <ui:define name="content">
        <h:form id="form">
            <p:growl id="messages" showDetail="true" />
            <p:contextMenu for="dataTable">
                <p:menuitem value="Delete" update="dataTable"
                    icon="ui-icon-close" actionListener="#{examMB.deleteExam}" />
            </p:contextMenu>
            <p:dataTable id="dataTable" var="exam" styleClass="DataTableUsers"
                value="#{examMB.examList}"  rows="5"
                rowKey="#{examMB.exam_id}" selection="#{examMB.selectedExam}"
                selectionMode="single" editable="true" paginator="true"
                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                rowsPerPageTemplate="5,10,15">
                <p:ajax event="rowEdit" listener="#{examMB.onEdit}"
                    update=":form:messages, :form:dataTable" />
                <p:column sortBy="name" filterBy="name" id="name" headerText="Name">
                    <h:outputText value="#{exam.name}" />
                </p:column>

                <p:column sortBy="subject" id="subject"
                    headerText="Subject">

                    <h:outputText value="#{exam.subject}" />

                </p:column>
                <p:column sortBy="examStart" id="examStart"
                    headerText="Exam Start">
                    <h:outputText value="#{exam.examStart}" />
                </p:column>
                <p:column sortBy="examStop" id="examStop"
                    headerText="Exam Stop">
                    <h:outputText value="#{exam.examStop}" />
                </p:column>
                <p:column headerText="Informations">
                    <h:outputText value="#{exam.info}" />
                </p:column>
                <p:column headerText="Ratings">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{exam.ratings}" />
                        </f:facet>
                        <f:facet name="input">
                            <h:inputText value="#{exam.ratings}" />
                        </f:facet>

                    </p:cellEditor>
                </p:column>
                <p:column style="width:6%" headerText="Edit">
                    <p:rowEditor />
                </p:column>

            </p:dataTable>
        </h:form>
    </ui:define>
</ui:composition>

感谢advence! 托米!

1 个答案:

答案 0 :(得分:4)

我认为你不明白'rowKey'的作用。

您必须为'rowKey'指定唯一且非空的属性才能使选择工作。

更改此

value="#{examMB.examList}" var="exam" rowKey="#{examMB.exam_id}"

到这个

value="#{examMB.examList}" var="exam" rowKey="#{exam.id}"