【问题标题】:Error After Selecting dataTable选择数据表后出错
【发布时间】:2013-08-06 06:41:27
【问题描述】:

当我在 dataTable 中进行选择时,会出现以下错误

[javax.faces.FacesException: DataModel must implement org.primefaces.model.SelectableDataModel when selection is enabled or you need to define rowKey attribute]]

但是在我的 dataTable rowKey 属性中已经定义并且我检查了它的值是唯一的。我收到此错误的可能原因是什么

数据表代码如下

<p:dataTable id="scenarioDataTableId" var="scenarioDataTable" value="#{myBean.scenarioApplicationColumnBOList}" tableStyle="width:90%" rowKey="scenarioDataTable.scenarioApplicationColumnId" selection="#{myBean.selectedScenarioApplicationColumnRow}" >
    <f:facet name="header">Database Columns That will be updated in this Scenario</f:facet>

    <p:ajax event="rowSelectRadio" listener="#{myBean.editSelectedScenarioApplicationColumnAction}"></p:ajax>
    <p:column selectionMode="single" style="width:10%" /> 

    <p:column id="Id" headerText="Id" >
                            #{scenarioDataTable.scenarioApplicationColumnId}
    </p:column>

    <p:column id="scenarioId" headerText="Scenario Id" >
                            #{scenarioDataTable.scenarioId}
    </p:column>

    <p:column id="appId" headerText="Application Column Id" >
                            #{scenarioDataTable.applicationColumnId}
    </p:column>

    <p:column id="tableNameId" headerText="Table Name" >
                            #{scenarioDataTable.tableName}
    </p:column>

    <p:column id="columnNameId" headerText="Column Name" >
                            #{scenarioDataTable.columnName}
    </p:column>

    <p:column id="columnValidValueId" headerText="Column Valid Value" >
                            #{scenarioDataTable.columnValidValue}
    </p:column>

    <p:column id="dbActionId" headerText="DB Action" >
                            #{scenarioDataTable.dbAction}
    </p:column>

    <f:facet name="footer">
        <p:commandButton value="Add New Row" action="#{myBean.openDialogScenarioUpdateColumn}" oncomplete="dialogScenarioUpdateColumn.show()" rendered="#{myBean.scenarioInputFieldRendered}"></p:commandButton>    
        <p:spacer width="20" ></p:spacer>
        <p:commandButton id="editButton" value="Edit" action="#{myBean.editSelectedScenarioApplicationColumnAction}" update=":formSelectCriteria:ScenarioMainPanel" ></p:commandButton>
        <p:spacer width="20" ></p:spacer>
        <p:commandButton id="deleteButton" value="Delete"></p:commandButton>
    </f:facet>

</p:dataTable>

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    看看Primefaces ShowcaserowKey 必须引用您的 p:dataTable 中显示的属性(这是您的 #{myBean.scenarioApplicationColumnBOList} 对象之一的属性),例如

    rowKey="#{scenarioDataTable.scenarioApplicationColumnId}"
    

    但不是

    rowKey="scenarioDataTable.scenarioApplicationColumnId"
    

    【讨论】:

    • 哦..愚蠢的错误。你知道我一整天都在头疼。无论如何感谢您指出错误
    猜你喜欢
    • 2018-07-03
    • 2013-05-11
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    相关资源
    最近更新 更多