我想有条件地输出一些Facelets代码.
为此,JSTL标签似乎工作正常:
<c:if test="${lpc.verbose}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否是最佳做法?还有另一种方法来实现我的目标吗?
我需要动态的列数.Richfaces <rich:columns>在3.3.3-final中提供丰富的表面,但对于Richfaces 4,他们似乎推荐<c:forEach>.
C:的forEach
我不能让它正常工作.因为我无法依赖数据表中的var我无法弄清楚如何<c:forEach>使用正确的列列表进行提供.(每行都有自己的值但标题相同)
基本上我要显示的数据是具有x大小的行的列表,每行有列值与Y大小的列表.但是怎么能<c:forEach>告诉支持bean它是什么行所以我可以提供正确的列?
UI/A4J:重复
我不想重新发明轮子,因为我需要冷冻柱和许多其他功能.以这种方式创建表html并使用jQuery来考虑其他功能.然而,这对维持和开展大量工作毫无希望.
我还看了从支持bean构建它动态创建子项但我完全不喜欢它.这必须是最后的手段.
使用:Tomcat 7,servlet 3.0,JSF 2.1x - Mojarra,Richfaces 4.x.
更新
好的,所以我最终得到了一些结果.但是我的标题没有显示.值显示完美但不显示标题.使用迭代或其他东西做一些问题?
<rich:dataTable value="#{controller.rows}"
var="row">
<c:forEach items="#{controller.columns}" var="column">
<rd:column id="name" width="250">
<f:facet name="header">
<h:outputText value="#{row.myArrayList[column].header}" />
</f:facet>
<h:inputText value="#{row.myArrayList[column].value}" disabled="#{row.myArrayList[column].open}"/>
</rd:column>
</c:forEach>
</rich:dataTable>
Run Code Online (Sandbox Code Playgroud) 我试图通过地图项目的列表进行迭代,即包含HashMap或类似的东西的一个ArrayList,我试图做到这一点在primefaces数据表.这基本上就是我要做的事情:
<body>
<h:form>
<p:dataTable value="#{customerBean.list}" var="map">
<c:forEach items="#{map}" var="entry">
<p:column headerText="#{entry.key}">
#{entry.value}
</p:column>
</c:forEach>
</p:dataTable>
</h:form>
</body>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,customerBean.list是List<Map<String, String>>和条目是一个Map<String, String>.
我想要做的,是营造列的动态量的基础上,在条目数量Map<String, String>使用的标题名称映射条目的键的同时,和值作为输出.c:forEach当我使用硬编码时Map<String, String>,这个东西似乎工作正常,但显然它无法循环通过变量p:dataTable.我假设该程序采取预防措施,以避免必须循环不同大小的地图.那么我怎么能做这项工作呢?如何根据Map中的条目数创建任意数量的列?请注意,我100%肯定每个人Map<String, String>的身材都相同List<Map<String, String>>
编辑:
这是我的豆源.代码工作正常,一切,问题只是循环不愿意通过我的地图:
@ManagedBean
@SessionScoped
public class CustomerBean {
private List<Map<String, String>> list = new ArrayList<Map<String, String>>();
private Mapper mapper = new Mapper();
public CustomerBean() {
list = mapper.all(); //gets data from database
}
public List<Map<String, String>> getList() { …Run Code Online (Sandbox Code Playgroud) jsf ×2
jsf-2 ×2
datatable ×1
facelets ×1
jstl ×1
loops ×1
map ×1
primefaces ×1
richfaces ×1
servlet-3.0 ×1