Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用o:form includeRequestParams=";排序时删除PrimeFaces数据表筛选;“真的”;_Primefaces_Filter_Datatable_Omnifaces_Http Request Parameters - Fatal编程技术网

使用o:form includeRequestParams=";排序时删除PrimeFaces数据表筛选;“真的”;

使用o:form includeRequestParams=";排序时删除PrimeFaces数据表筛选;“真的”;,primefaces,filter,datatable,omnifaces,http-request-parameters,Primefaces,Filter,Datatable,Omnifaces,Http Request Parameters,这是继此之后的一个问题: 在使用请求参数时,使用PrimeFaces-5.1和omnifaces-2.1呈现带有分页、筛选和排序的数据表。 我的数据表是这样构造的: <o:form includeRequestParams="true"> <p:dataTable id="hostStateHistoryTable" value="#{HostHistoryBean.hostStateHistoryList}" var="status" widgetVar="statu

这是继此之后的一个问题:

在使用请求参数时,使用PrimeFaces-5.1和omnifaces-2.1呈现带有分页、筛选和排序的数据表。 我的数据表是这样构造的:

<o:form includeRequestParams="true">
    <p:dataTable id="hostStateHistoryTable" value="#{HostHistoryBean.hostStateHistoryList}" var="status" widgetVar="statusTable"
    filteredValue="#{HostHistoryBean.filteredHostStateHistoryList}" 
    rowStyleClass="#{status.state eq 0 ? 'up' : null} #{status.state   eq 1 ? 'down' : null} #{status.state eq 2 ? 'unreachable' : null}"
    rows="50" paginator="true" paginatorTemplate="{PageLinks} {RowsPerPageDropdown}" rowsPerPageTemplate="10,50,100">
        <p:column sortBy="#{status.stateTime}">
            <f:facet name="header">Start Time</f:facet>
            <h:outputText id="Start" value="#{status.stateTime}"     />
        </p:column> 
        ... all columns
    </p:dataTable>
</o:form>

开始时间
... 所有列
但是排序正在删除PrimeFaces数据表过滤。 我可以单独排序和过滤,没有问题,但当我在过滤后对数据表进行排序时,会删除过滤器。再次单击同一个筛选器不会执行任何操作,但对另一个值进行筛选将显示预期结果。 看起来o:form将重新发送请求,包括属性,而不是使用DataTableFilteredValue

编辑:
我在这里上传了一个基于eclipse的MCVE项目:

好的,所以我发现在每次ajax调用中都会重置filteredValue,因为@RequestScoped。 我想我把事情搞混了。 所以我把所有@ManagedBeans都换成了@Named 然后,我用大多数属性创建了一个新的@SessionScoped Bean,并将@RequestScoped Bean和基于请求的属性@注入其中


现在一切都按预期进行了

将其更改为h:form是否会使其再次工作?请创建一个mcve,以便其他人可以(尝试)更轻松地复制它:将其更改为h:form,由于ajax callOk未使用请求参数,使每个功能都无用。让我重新表述一下:在您使用的PrimeFaces版本中,不使用参数的简单排序和筛选是否有效?否则,我们可能会在其他页面上按预期(未进行民意调查时)搜索hostsIt工作是的,MCVE会有所帮助。我想错误在于加载逻辑。视图范围的数据最好存储在视图范围的bean中,而不是会话范围的bean中。另请参见:非常有趣:)我切换到ViewScope,两组数据处于更一致的状态,因此这意味着
filteredValue
后面的支持bean必须位于另一个
@ViewScope
的支持bean中?我在
@RequestScoped
中也有这个属性(是的,我现在完全理解它在每次AJAX调用时都被重置)。