Dav*_*ave 15 java datatable foreach jsf
我是JSF的新手,只是尝试一个概念证明来决定它是否对项目有用.我的POC只包含一个页面,其中包含一些包含一些数据的表格.
列数(以及行数)是动态的,在呈现页面之前从数据库加载.
通过以下内容,我得到两个具有适当行数的静态列,正如我所期望的那样:
<h:dataTable id="data" value="#{viewDataBean.dataRows}" var="row">
<h:column>
<f:facet name="header">
<h:outputText value="Col 1"/>
</f:facet>
<h:outputText value="#{row.values[0].value}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Col 2"/>
</f:facet>
<h:outputText value="#{row.values[1].value}"/>
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
我想要做的是添加一<c:forEach...>
组<h:column>...</h:column>
标签,迭代列数,但这不起作用 - 我尝试了各种组合,但我期待这样的工作:
<h:dataTable id="data" value="#{viewDataBean.dataRows}" var="row">
<c:forEach items="#{row.values}" var="val">
<h:column>
<f:facet name="header">
<h:outputText value="Col 1"/>
</f:facet>
<h:outputText value="#{val.value}"/>
</h:column>
</c:forEach>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
从谷歌搜索,我已经阅读了各种模糊的评论,比如'那不是那样做的',但我还没有找到任何特别引人注目的正确方法的例子.有人提到在支持bean中构建DataTable,但我能找到的唯一例子是http://forums.sun.com/thread.jspa?threadID=577589.它有效,但感觉有点笨拙,特别是因为使用的一些方法已被弃用.
目前,看起来我不太可能使用除核心JSF之外的任何库,但如果绝对必要,这可能会改变.任何人都可以对正确的方法有所了解吗?它看起来应该很简单,所以我肯定我只是遗漏了一些明显的东西.
Bal*_*usC 12
JSTL和JSF没有按照您对编码的期望同步运行.更重要的是,JSTL首先从上到下处理整个页面,然后将结果交给JSF进行进一步处理.该#{row}
是当时不可用JSTL忙,所以你的努力的确将无法正常工作.
链接主题确实提到了已弃用的方法,但该主题也已老化并讨论了旧版JSF 1.0/1.1.如果你探索上述方法的当前Javadocs,你会看到 - 通常 - 提到了替换方法.例如,Application#createValueBinding()
提到以下内容:
不推荐.这已经被调用
getExpressionFactory()
当时取代了ExpressionFactory.createValueExpression(javax.el.ELContext, java.lang.String, java.lang.Class)
.
你可以找到的动态填充一个DataTable这种方式在一些具体的例子这篇文章.
对于第三方组件库,RichFaces有一个rich:columns
专为此目的而设计的组件.
归档时间: |
|
查看次数: |
20134 次 |
最近记录: |