【问题标题】:Primefaces - datatable column filter textbox not appearingPrimefaces - 数据表列过滤器文本框未出现
【发布时间】:2013-10-26 13:53:22
【问题描述】:

我正在使用 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;
    }
}

【问题讨论】:

  • 您的问题仅在于过滤权..您的dataTable是否从bean类中检索值..
  • 过滤框不显示,甚至输入任何内容。
  • @Catfish - 你试过旧版本的 PF 吗?
  • @kolossus 我刚刚检查了 PF 3.5,它在那里工作。过滤似乎在 4.0 中被破坏了。
  • @Catfish - 数字。 4.0 仍然是最前沿的。报告错误?

标签: jsf jsf-2 primefaces


【解决方案1】:

我想通了。似乎在 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>

【讨论】:

    【解决方案2】:

    我只是好奇,这是您页面中的实际代码吗?因为它应该包裹在 &lt;p:cellEditor&gt; 中,如 primefaces 展示中所示

    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> 
    

    【讨论】:

    • 我有另一列包含 p:cellEditor,但这个特定的列我只是想让过滤器文本框出现。
    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2012-11-01
    • 2014-03-01
    相关资源
    最近更新 更多