【问题标题】:PrimeFaces lazydatamodel load method not called未调用 PrimeFaces 延迟数据模型加载方法
【发布时间】:2012-10-25 22:59:07
【问题描述】:

我碰巧不明白为什么我的加载方法没有在我的 primefaces 表的惰性数据模型中调用。我的 xhtml 页面是这样的

<h:form id="myForm">
    <p:dataTable value="#{myBean.configDataModel}"
                            id="configTable" var="config" paginator="true" rows="10"
                            selectionMode="single"
                            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                            rowsPerPageTemplate="5,10,20">
    .
    .
</h:form>

我的 Bean 代码是这样的,并提出了 system.out.println 语句,但我注意到它没有被调用。

public class MyBean{
    // private List<MyBean> configList;
    private LazyDataModel<MyBean> configDataModel;

    @SuppressWarnings("serial")
    public LazyDataModel<MyBean> getConfigDataModel() {
        if (configDataModel == null) {
            configDataModel = new LazyDataModel<MyBean>() {

                @Override
                public List<MyBean> load(int arg0, int arg1, String arg2,
                        SortOrder arg3, Map<String, String> arg4) {
                    System.out.println("Here!!!!!");
                    return null;
                }
            };

        }
        return configDataModel;
    }
    public void setConfigDataModel(LazyDataModel<MyBean> configDataModel) {
        this.configDataModel = configDataModel;
    }
}

可能是什么原因?

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    从 PrimeFaces 3.3 开始,您需要将重复组件的 lazy 属性显式设置为 true 以启用对 LazyDataModel 的支持。

    <p:dataTable ... lazy="true">
    

    另见:

    【讨论】:

    • Arrrrgggghh...这就是原因,我使用 Primefaces 3.1 构建了一个使用惰性数据模型的小应用程序。当我在最新的 3.4 版本中遇到此问题时,我只是在跟进。一如既往地感谢 BalusC ..
    • 我一直用这个撞到我的头.....花15分钟调试然后记住废话......哈哈......
    • 我有 3.5 版并且我已经在我的数据表中设置了lazy="true"。但是仍然没有调用lazyDataModel 中的 load() 方法。你有什么想法吗?
    • 即使使用 Datatable 属性lazy="true",其他一些 Datatable 属性也可以抑制延迟加载,导致 UnsupportedOperationException 并显示消息“延迟加载未实现”,(由 LazyDataModel 中的 load() 存根生成) .尝试删除诸如 sortMode 和 sortBy 之类的属性,并设置 paginator="true" 而不是通过 bean 属性设置它。
    【解决方案2】:
    1. 如果您是 IE,请务必检查它所使用的所谓“兼容模式”。在我在过滤器字段中键入文本后,延迟数据表未能调用其加载方法,我遇到了非常烦人的问题。在浪费了很多时间后,我最终意识到浏览器运行在默认模式 7。数据表延迟加载适用于模式 8、9、10
    2. 如果您的惰性数据表在对话框中,请务必将对话框放在表单中,否则,在过滤器字段中键入值将不会提交给 load 方法。

    【讨论】:

      猜你喜欢
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 2012-09-25
      • 2013-01-09
      • 2014-01-19
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多