Primefaces - 数据表列过滤器文本框未显示

时间:2013-10-17 21:18:01

标签: jsf jsf-2 primefaces

我正在使用PF 4.0,我有一个懒惰加载的数据表,我正在尝试将过滤器文本框添加到“名称”列,但文本框没有出现。我错过了什么?

...
<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;
    }
}

2 个答案:

答案 0 :(得分:6)

我明白了。似乎在PF 4.0中,您需要filterBy代码来改变:

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

为:

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

答案 1 :(得分:0)

我很好奇,这是你页面中的实际代码。因为它应该包含在<p:cellEditor>内,如primefaces showcase

所示

http://www.primefaces.org/showcase-labs/ui/datatableRowEditing.jsf

有点像

<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>