Jsf 输入键上的Primefaces数据表筛选不起作用
我在primefaces数据表中添加了一个全局过滤器。当我按enter键时,筛选文本没有被发送到服务器进行查询。我的代码如下:Jsf 输入键上的Primefaces数据表筛选不起作用,jsf,primefaces,Jsf,Primefaces,我在primefaces数据表中添加了一个全局过滤器。当我按enter键时,筛选文本没有被发送到服务器进行查询。我的代码如下: <h:form id="searchResultsForm"> <p:dataTable value="#{searchController.resultItems}" var="item" editable="false" id="searchResultsTable" lazy="true" t
<h:form id="searchResultsForm">
<p:dataTable value="#{searchController.resultItems}"
var="item" editable="false"
id="searchResultsTable" lazy="true"
tableStyleClass="viewedHistoryTable"
emptyMessage="No items"
widgetVar="searchResultsTableVar"
currentPageReportTemplate="({startRecord} - {endRecord} of {totalRecords})"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {CurrentPageReport}"
paginator="true" rows="25" rowsPerPageTemplate="10,25,50,100"
rowKey="#{item.abbr}">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search:" />
<p:inputText id="globalFilter" onkeyup="if (event.keyCode === 13){PF('searchResultsTableVar').filter();}" style="width:150px" placeholder="Filter results"/>
</p:outputPanel>
</f:facet>
<p:column rendered="true">
<h:outputText value="#{item.title}" />
<br />
<h:outputText value="#{item.abbr}" styleClass="searchResultsAbbr" />
</p:column>
</p:dataTable>
</h:form>
如果我删除If条件以检查Enter的事件keycode,则每次按键时都会将筛选器字符串发送到服务器。不确定客户端为什么在enter时发送空字符串。有什么想法吗?您可以使用jquery附件,这样就可以完全删除“onkeyup”
$(document).ready(function() {
$('#globalFilter').keypress(function(event) {
if ((event.keyCode || event.which) == 13) {
PF('searchResultsTableVar').filter();
}
});
});
此处测试:我想分享我的工作代码:
<h:form id="searchResultsForm">
<p:dataTable value="#{searchController.resultItems}"
var="item" editable="false"
id="searchResultsTable" lazy="true"
tableStyleClass="viewedHistoryTable"
emptyMessage="No items"
widgetVar="searchResultsTableVar"
currentPageReportTemplate="({startRecord} - {endRecord} of {totalRecords})"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {CurrentPageReport}"
paginator="true" rows="25" rowsPerPageTemplate="10,25,50,100"
rowKey="#{item.abbr}" selectionMode="single" selection="#{searchController.currItem}">
<f:facet name="header">
<h:panelGroup>
<p:outputPanel style="padding-bottom: 4px;">
<p:inputText id="globalFilter" onchange="PF('searchResultsTableVar').filter();" style="width:60%;" placeholder="Filter results"/>
<p:commandButton id="Search" value="Search" process="@this" update="@this" style="font-size: 0.8em;"/>
</p:outputPanel>
</h:panelGroup>
</f:facet>
<p:column rendered="true">
......
</p:column>
</p:dataTable>
</h:form>
......
感谢您的回复。问题在于“输入”被查询的字符串是空字符串。PrimeFaces 4.0就是这样,我不认为PrimeFaces 3.4中会发生这种情况,而是尝试替换PF('searchResultsTableVar').filter()代码>带有searchResultsTableVar.filter()代码>@Daniel我看到了同样的行为。筛选器为空。是否使用h:form
包装了该表?是,数据表采用立即h:form。我用h:form编辑了这个问题。一般来说,你必须避免嵌套形式。