带有动态列的DataTable
我是JSF的新手,只是尝试一个概念certificate来决定它是否对项目有用。 我的POC只包含一个页面,其中包含一些包含一些数据的表格。
列数(以及行数)是动态的,在呈现页面之前从数据库加载。
通过以下内容,我得到两个具有适当行数的静态列,正如我所期望的那样:
我想要做的是在一组...
标签周围添加 ,以迭代列数,但是没有工作 – 我尝试了各种组合,但我期待这样的工作:
从谷歌搜索,我已经阅读了各种模糊的评论,比如’那不是那样做的’,但我还没有找到任何特别引人注目的正确方法的例子。 有人提到在支持bean中构建DataTable,但我能找到的唯一例子是http://forums.sun.com/thread.jspa?threadID=577589 。 它有效,但感觉有点笨拙,特别是因为使用的一些方法已被弃用。
目前,看起来我不太可能使用除核心JSF之外的任何库,但如果绝对必要,这可能会改变。 有人能否以正确的方式解决这个问题? 看起来它应该很简单,所以我确定我只是遗漏了一些明显的东西。
JSTL和JSF没有按照您对编码的期望同步运行。 更重要的是,JSTL首先从上到下处理整个页面,然后将结果交给JSF进行进一步处理。 JSTL忙时#{row}
不可用,因此您的尝试确实无效。
链接的主题确实提到了已弃用的方法,但该主题也已老化并讨论了旧版JSF 1.0 / 1.1。 如果你探索上述方法的当前Javadocs,你会看到 – 通常 – 提到了替换方法。 例如, Application#createValueBinding()
提到以下内容:
不推荐 。 这已经被调用
getExpressionFactory()
然后调用ExpressionFactory.createValueExpression(javax.el.ELContext, java.lang.String, java.lang.Class)
取代。
您可以在本文中找到一些以这种方式动态填充数据表的具体示例。
对于第三方组件库,RichFaces有一个rich:columns
组件,专门用于此目的。
第三方库PrimeFaces具有p:columns
组件,用于从数据源动态生成列。