小编Moh*_*med的帖子

使用 primefaces 过滤器后获取空行键

在此输入图像描述当我没有在 primefaces 数据表中使用过滤器并尝试选择行时,例如按编辑它运行良好并获取所选行。但是当我使用 primefaces 过滤器然后选择过滤后的行然后编辑时,我得到了 org.primefaces.model。 SelectableDataModel 启用选择时出现异常。

我知道这意味着我有一个空行键,但我不知道为什么。我使用有效的行键(id)数据表的主键,当我使用调试时,我发现它两次获得 id失败的情况,第一次得到正确的过滤id,第二次得到空id。我的问题是为什么它两次获取 rowkey id,第二次获取 null 并导致异常

    <h:body>
    <h:form prependId="false" id="growlForm">
        <p:growl id="growl" showDetail="false" />
    </h:form>
    <h:form id="dataForm">
    <p:panel id="ingerdientsTable">
    <f:facet name="header">
          <h:outputText value="Standard Food List" />
        </f:facet>  
         <p:dataTable id="ingedientsTable" widgetVar="ingedientsTable" var="ingerdients" resizableColumns="true"
                    selectionMode="single" selection="#{mealBean.selectedStandardIngerdients}"
                     rowKey="#{ingerdients.getId()}" value="#{mealBean.allIngerdients}" rowsPerPageTemplate="5,10,25,50" rows="20"
                     paginator="true" style="padding-top:10px;padding-bottom:10px" tableStyle="table-layout: auto"
                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} ">

                    <p:column headerText="Food Type"  filterBy="#{ingerdients.name}"><h:outputText value="#{ingerdients.name}" /></p:column>
                    <p:column headerText="Protein(gm)"  filterBy="#{ingerdients.containedProtiens}"><h:outputText value="#{ingerdients.containedProtiens}" /></p:column>
                    <p:column headerText="Carbs(gm)"  filterBy="#{ingerdients.containedCarbs}"><h:outputText value="#{ingerdients.containedCarbs}" /></p:column>
                    <p:column headerText="Fats(gm)"  filterBy="#{ingerdients.containedFats}"><h:outputText value="#{ingerdients.containedFats}" /></p:column>
                    <p:column …
Run Code Online (Sandbox Code Playgroud)

datatable jsf primefaces jsf-2

-1
推荐指数
1
解决办法
1208
查看次数

标签 统计

datatable ×1

jsf ×1

jsf-2 ×1

primefaces ×1