【问题标题】:RichFaces application, should I use rich:dataTable or jQGrid, pros cons?RichFaces 应用程序,我应该使用 rich:dataTable 还是 jQGrid,利弊?
【发布时间】:2010-10-10 23:44:18
【问题描述】:
从here 开始,我需要在使用 RichFaces 3.3.3、JSF 1.2 和 Facelets 的 Web 应用程序中拥有一个内联可编辑网格。
我的选择是rich:dataTable RichFaces 控件或jQuery 插件jQGrid
我都试过了,到目前为止发现如下:
- jQGrid 工作得非常好,但我不确定如果我尝试从网格刷新 JSF 控件会发生什么,如果可能的话?
- 我对从 jQGrid 使用或触发 RichFaces 模式窗口犹豫不决,这会导致问题吗?还是我应该坚持使用简单的 jQuery 模态?
- 为了安全地使用 jQGrid,看起来我必须自己做很多工作,失去了 Richfaces 控件的好处?我说的对吗?
- rich:dataTable 没有固定标题的可滚动表。 Richfaces 有一个可滚动的表格,但支持内联编辑存在问题。 (标题消失,编辑无法正常工作)
- rich:dataTable 不是很可定制,并且缺少一些 jqGrid 所具有的非常好的功能
- rich:dataTable 有一些似乎无法解决或需要 js hacking 的问题(例如,如果您在可编辑行内使用日历控件,单击一次在日历控件在行上再次触发编辑事件,使您丢失在其他字段中的更改)。
除了上面的一些问题,我想知道每种方法的优缺点是什么,从长远来看,哪种方法更容易维护、扩展和完成。
【问题讨论】:
标签:
jsp
jsf
jqgrid
richfaces
facelets
【解决方案1】:
在过去 1.5 年转向 jQuery 组件和 Grails 之前,我已经使用 ricfaces 和 JSF 工作了 4-5 年。这是我对这个主题的看法:
- 最终 JSF 控件呈现为 HTML 组件,因此我看不到刷新组件的任何问题(如果您根本没有处理为 jsf 控件生成的 id,则可以用 div 包围控件,然后刷新分)。
- 恕我直言 - jQuery modals 比 RichFaces modal 面板使用起来非常简单且更灵活。
- 我认为这是不正确的,但如果不了解您的用例,就很难判断。我相信你会失去的一件事是 jsf 组件提供的两种数据绑定。
4,5,6 - 支持 jqGrid。
使用 JSF 的优点 - 由于您的服务器端代码是 JSF,因此您可以将数据绑定内置到您的 UI 组件中(两种方式 - 服务器到客户端和客户端到服务器)。另一件事是 JSF 组件的外观将与页面的其余部分相匹配。使用 jqGrid,您必须自定义主题。
使用 JSF 的缺点 -rich:dataTable 不是很可定制,与 jqGrid 相比也没有那么丰富。因此,如果您有一个复杂的 UI,并且您意识到通过 rich:dataTable 不支持特定的 UI 功能,那么您别无选择,只能使用其他一些组件或放弃该功能。
jqGrid 的优点 - 功能丰富且非常容易定制。我已经完成了 - treegrid、冻结列、可编辑列、使用 qtip 插件进行客户端验证等。
jqGrid 的缺点 - 从服务器到客户端的数据绑定只有一种方式。为了实现这一点,您必须编写一些服务器代码来将数据格式化为 JSON 结构,然后再将其发送到客户端。对于从客户端到服务器的数据绑定:您必须手动将请求参数映射到 JSF bean。
注意:我没有使用带有 JSF 后端的 jqGrid。不过,我的回答是基于我对每个框架的工作原理的理解。