问题标签 [primefaces-datatable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
primefaces - PrimeFaces 8.0 - Rowexpansion 内表的过滤器正在更新每个行扩展中所有表的数据
PrimeFaces 8.0
两个问题:
- 当我扩展了两个行扩展列时,过滤不起作用
- 在行扩展中过滤子表是用相同的过滤子记录替换所有其他行扩展,即使子数据不属于行扩展。
任何帮助表示赞赏。谢谢你的时间。
jsf - Primefaces数据表sortBy在filterBy之后不起作用
我在 Primefaces 中遇到了 filterBy 和 sortBy 的奇怪行为,其中 filterBy 本身工作正常,而 sortBy 本身也工作正常。我什至可以按一列对数据表进行排序,然后进行过滤。但我无法先过滤然后再排序。
我认为核心问题是,我在值列表中使用了中间数据结构。我会试着举个例子。我有一堂课Person
:
在List<Person>
我的 Bean 中,排序和过滤工作正常。
现在我有一个额外的类Pet
,它属于一个Person
.
因此,有一个数据结构Pair<T1, T2>
对这种归属进行建模(不幸的是,我无法更改这种设计)。该数据结构的实现如下所示:
所以最后在我的 Bean 中,我有一个List<Pair<Person, Pet>>
,它显示在数据表中。
如上所述,过滤器(例如通过 person.name)工作正常。也排序(例如按名称工作正常)。唯一的问题是当第一次过滤然后按一列排序时,我得到一个 NullPointerException 用于数据表中的单个条目。
对正在发生的事情的分析表明,在过滤然后排序之后,Pair
调用的默认构造函数(唯一一次;不是在单次过滤期间,不是在单次排序期间,在其他情况下都没有),似乎导致了一个空对(因为二传手也没有被调用)。
有谁知道,为什么在那里调用默认构造函数?即使在这种List<Person>
情况下,过滤后排序时也不会调用 Person 的默认构造函数。
jsf - Primefaces filterBy 覆盖其他数据表
我有两个类Person
和Pet
,其中一个人可能有多个宠物:
在我看来,我有一个数据表,列出了List<Person>
在搜索中找到的所有人员 ( ):
对于每个人(即行),我添加了一个rowExpansion
包含另一个数据表,其中包含属于此人的所有宠物,如图所示,如果有一些宠物属于此人:
由于在我的示例中有些人有很多宠物,因此我添加了过滤宠物的机会。一切看起来都很好,并且显示正确。过滤器也工作正常。
但我的问题是,如果我过滤人 A 的 pets 表并随后扩展人 B 的 pets 表,则该 pets 表也只包含人 A 的过滤后的 pets 表的结果。所以看起来,过滤之一宠物表覆盖所有宠物表的内容。
是否有可能使过滤结果仅可用于过滤它的特定数据表?或者是否有可能在扩展他们的行时“刷新”另一个人 B 的宠物表?
jsf - 在 Primefaces 中关闭对话框时更新数据表和消息
我有一个相对简单的数据表,其中包含请求列表。我有用于批准和拒绝的命令按钮以及顶部的消息部分以提供反馈。
对于批准,我只需处理所有内容并刷新数据表和消息,但对于拒绝,我想提示用户输入消息。无论我似乎在做什么,我都无法在对话框关闭时同时显示数据表更新和消息。我能做到的最好的事情是在对话框关闭时消息显示几毫秒。
所以我的页面以消息、表单和数据表开头
然后我有一个命令按钮来处理拒绝
最后是一个对话框来获取用户输入
然后ViewScoped
烤豆有
使用代码,当您单击对话框上的拒绝按钮时,它会执行它需要执行的所有处理(并且工作正常)并且消息显示在对话框后面但表单不会关闭并且数据表仅在以下情况下更新单击取消或 x 关闭对话框。
我尝试添加oncomplete
拒绝按钮以关闭表单,虽然这可以工作并更新数据表,但消息会闪烁一毫秒,然后与表单一起消失。我尝试过以processRejection
达到相同结果的方法关闭表单。
删除 ajax 关闭事件并添加oncomplete
到拒绝按钮以关闭对话框会关闭对话框并显示消息,但不会刷新数据表。
如何在提示用户输入一些文本时达到我想要的效果,然后
- 关闭对话框
- 刷新数据表
- 显示信息
primefaces - Primefaces 组件 panelGrid 和 repeat 在与 ajax 更新一起使用时不能一起工作
我有一个包含各种 primefaces 组件的网页。我想以如下所示的格式在页面上显示数据:
该表由 3 行组成:
第 1 行有 3 列。第 1 列有一组复选框。单击该列表中的复选框,通过对这些行内的面板进行 ajax 更新,有条件地加载第 2 行和第 3 行。
此实现最初是在richfaces 中完成的,并使用richfaces 列的rowBreakBefore 属性在行之间放置换行符。
将组件转换为 primefaces 后,我失去了使用 rowBreakBefore 操作列以落在新行上的能力。我将实现移至 panelgrid 并重复;panelgrid 处理布局并重复处理行。
但是我无法基于单击第 1 行第 1 列中的复选框有条件地显示行(使用第 2 行和第 3 行中面板组件的 ajax 更新)。
如果我在第 1 列中选择所需的复选框后保存页面,它会正确显示错误,因为第 2 行中的复选框列表是必填字段,并且第 2 行也会显示。
我想通过单击复选框向用户显示该行,并且不想进行整页刷新。
网格布局代码
jsf - 为什么使用延迟加载对任何字段 Prime Faces 数据表进行排序后过滤器变为空?
我搜索了很多问题,尝试了很多东西。下面我有产生问题的片段步骤。首先对任何列应用过滤器值,然后对表界面上存在的任何列过滤器值应用排序,但在加载方法时,filters.isEmpty() 为真。
服务.java
我只展示了重现问题所需的小片段。在此代码中,我们首先应用过滤器,该过滤器将显示正确的查询列表(filters.isEmpty() = false),但在记录过滤器后,在加载方法中从表中应用排序时,即使过滤值出现在数据表中。我正在使用 prime faces 版本 6.2 和 jsf 2.2 并使用 hql 查询从 MySQL 数据表中获取数据
任何帮助将不胜感激在此先感谢。
jsf - 过滤与 FilterMeta 不相等的值
我正在尝试将 Primefaces 迁移Datatable
到延迟加载,但我发现一些过滤问题。使用 non-lazy Datatable
,过滤只是将所有值从数据库加载到 some ArrayList
,然后用 Javastream()
或其他任何我想要的方式过滤它们。但是LazyDataModel
,过滤器必须全部指定为FilterMeta
对象,用于构建对 BD 的查询,因此只需要从 DB 加载所需的数据。
听起来不错,简单的过滤很容易实现,如下所示:
当我想实现更复杂的过滤器时,问题就来了。例如,想要过滤不同于而不是相等的值似乎是不可能的事情。查看可能的MatchMode
值,没有不等式运算符。只有可能的值是:
我可以做一些逻辑体操,比如组合两个不同的过滤器value>5
并value<5
模仿value!=5
行为,但它看起来像很脏的代码。
关于我在这里缺少什么的任何想法?明显的解决方案是 FilterMeta 实现某种not()
或invert()
方法,但我没有发现任何类似的东西。
谢谢!
primefaces - Primefaces DataTable - 回流不适用于 iOS
Primefaces DataTable 重排不适用于 iOS。
有没有人遇到这个问题并找到解决方法?请协助。然而,它在 GitHub 上是同样的问题。
https://github.com/primefaces/primefaces/issues/1568#issuecomment-901261646
ajax - Primefaces dataTable分页中的Ajax事件不起作用
我有一个带有数据表的“正常”分页。第一个“加载”从数据库中引入 25 个项目。在 ajax“页面”事件中,我将以下元素分成 25 个项目块。一切都与 Primefaces 5.1 版完美配合,但在 5.2 版中,没有调用 onPageChange 方法,实际上分页什么也不做。
如果在 ajax 事件“page”中添加 process="@this" 它确实调用了 bean,但不是指定的 onPageChange 方法,而是一个标有 @PostConstruct 注释的 start 方法(这样,前 25 个项目和分页总是相同的)显示这些项目)。
背面(仅作为大纲):
版本:primefaces 5.2、jsf-api 2.2.2、jsf-impl 2.2.2(更新最后两个将非常昂贵)。
在这篇文章中,有几种可能性,但在仔细阅读所有内容后,我还没有设法解决错误。
未调用 commandButton/commandLink/ajax 操作/侦听器方法或未设置/更新输入值
非常感谢大家!