Jsf Primefaces-数据表列筛选器文本框未出现

Jsf Primefaces-数据表列筛选器文本框未出现,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我使用的是PF 4.0,我有一个数据表是延迟加载的,我试图在“name”列中添加一个过滤器文本框,但是文本框没有出现。我错过了什么 ... <p:dataTable var="user" value="#{userGroupBacking.users}" editable="true" id="userTable" paginator="true" rows="20" paginatorTemplate="{CurrentPageReport} {FirstPageLink}

我使用的是PF 4.0,我有一个数据表是延迟加载的,我试图在“name”列中添加一个过滤器文本框,但是文本框没有出现。我错过了什么

...
<p:dataTable var="user" value="#{userGroupBacking.users}" editable="true" id="userTable" paginator="true" rows="20"  
    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}" lazy="true"
    filteredValue="#{userGroupBacking.filteredUsers}" >

    <p:ajax event="rowEdit" listener="#{userGroupBacking.onEdit}" /> 

    <p:column headerText="User" filterBy="#{user.name}" filterMatchMode="contains">
        <h:outputText value="#{user.name}" />
    </p:column>
...
。。。
...
支持bean:

@ManagedBean(name="userGroupBacking")
@ViewScoped
public class UserGroupBacking {

@ManagedProperty(value="#{accessBacking}")
    private AccessBacking accessBacking;
    public void setAccessBacking(AccessBacking accessBacking) {
        this.accessBacking = accessBacking;
    }

@PostConstruct
    public void init() {
        this.ds = databaseBacking.getDs();
        if(isLoggedIn()) {
            loadData();
        }
    }

/**
     * Checks that the user is logged in
     * @return
     */
    public boolean isLoggedIn() {
        return accessBacking.isHasAccess();
    }

public LazyDataModel<User> getUsers() {
        return users;
    }
    public List<Group> getGroups() {
        return groups;
    }
    public List<Group> getSelectedGroups() {
        return selectedGroups;
    }
    public List<SelectItem> getGroupsAsSelectItems() {
        return groupsAsSelectItems;
    }
    public List<SelectItem> getUsersAsSelectItems() {
        return usersAsSelectItems;
    }
    public String getNewGroup() {
        return newGroup;
    }
    public void setNewGroup(String newGroup) {
        this.newGroup = newGroup;
    }
    public List<User> getFilteredUsers() {
        return filteredUsers;
    }
    public void setFilteredUsers(List<User> filteredUsers) {
        this.filteredUsers = filteredUsers;
    }
}
@ManagedBean(name=“userGroupBacking”)
@视域
公共类UserGroupBacking{
@ManagedProperty(value=“#{accessBacking}”)
私人支持;
公共无效setAccessBacking(AccessBacking-AccessBacking){
this.accessBacking=accessBacking;
}
@施工后
公共void init(){
this.ds=databaseBacking.getDs();
if(isLoggedIn()){
loadData();
}
}
/**
*检查用户是否已登录
*@返回
*/
公共布尔值isLoggedIn(){
return accessBacking.isHasAccess();
}
公共LazyDataModel getUsers(){
返回用户;
}
公共列表getGroups(){
返回组;
}
公共列表getSelectedGroups(){
返回SelectedGroup;
}
公共列表GetGroupsSelectItems(){
返回组选择项目;
}
公共列表getUsersAsSelectItems(){
返回UsersSelectItems;
}
公共字符串getNewGroup(){
返回新组;
}
公共void setNewGroup(字符串newGroup){
this.newGroup=newGroup;
}
公共列表getFilteredUsers(){
回流过滤器;
}
公共void setFilteredUsers(列表filteredUsers){
this.filteredUsers=filteredUsers;
}
}

我只是好奇,这是您页面中的实际代码吗。因为它应该被包裹在
内,如primefaces showcase所示

比如

<p:column headerText="Model" style="width:30%">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.model}" />  
                </f:facet>  
                <f:facet name="input">  
                    <p:inputText value="#{car.model}" style="width:100%"/>  
                </f:facet>  
            </p:cellEditor>  
        </p:column> 

我只是好奇,这是您页面中的实际代码吗。因为它应该被包裹在
内,如primefaces showcase所示

比如

<p:column headerText="Model" style="width:30%">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.model}" />  
                </f:facet>  
                <f:facet name="input">  
                    <p:inputText value="#{car.model}" style="width:100%"/>  
                </f:facet>  
            </p:cellEditor>  
        </p:column> 

我想出来了。在PF 4.0中,似乎需要更改filterBy代码:

<p:column headerText="User" filterBy="#{user.name}" filterMatchMode="contains">
    <h:outputText value="#{user.name}" />
</p:column>

致:


我想出来了。在PF 4.0中,似乎需要更改filterBy代码:

<p:column headerText="User" filterBy="#{user.name}" filterMatchMode="contains">
    <h:outputText value="#{user.name}" />
</p:column>

致:



您的问题只在于筛选是否正确..您的dataTable是否从bean类检索值..筛选框甚至无法在其中键入任何内容。@Catfish-您是否尝试过旧版本的PF?@kolossus我刚刚检查了PF 3.5,它在那里工作。过滤似乎在4.0中被破坏了。@Catfish-figures。4.0仍然是相当前沿的。报告一个错误?你的问题只是过滤正确。。你的dataTable是否从bean类检索值。。过滤器框甚至没有显示出来,无法在其中键入任何内容。@Catfish-你尝试过旧版本的PF吗?@kolossus我刚刚检查了PF 3.5,它在那里工作。过滤似乎在4.0中被破坏了。@Catfish-figures。4.0仍然是相当前沿的。报告错误?我有另一个列,其中有p:cellEditor,但是这个特定列我只是想让filter文本框出现。我有另一个列,其中有p:cellEditor,但是这个特定列我只是想让filter文本框出现。