我只想迭代一个列表,我不希望任何html吐出来,
所以datalist和c:ForEach不是一个选择。
原因是,模型已经完成,我们必须使用
<ul>
和<li>
,因此我无法使用创建表格的任何内容。
我已经调查过并且ui:repeat会完成这项工作,但它在JSP中不起作用。
我希望在STRUTS逻辑中有类似的东西:迭代,因为我只需要迭代 在列表上。
感谢您的帮助。
约翰
答案 0 :(得分:2)
<c:forEach>
不会生成任何HTML。它只遍历集合或数组。它与<struts:iterate>
完全相同,但是采用标准方式,并且使用JSP EL。
<ul>
<c:forEach var="item" items="${myListOfItems}">
<li><c:out value="${item.label}"/></li>
</c:forEach>
</ul>
答案 1 :(得分:1)
目前还不完全清楚“datalist”究竟是什么意思,但如果省略layout
属性,Tomahawk's <t:dataList>
默认不会发出任何HTML,所以它应该适合你。< / p>
<ul>
<t:dataList value="#{memberHandler.subTypes}" var="subType">
<li><h:outputText value="#{subType.fullSubtypeDisplayName}"/></li>
</t:dataList>
</ul>
顺便说一下,设置layout="unorderedList"
应该呈现与上例中完全相同的<ul><li>
:
<t:dataList value="#{memberHandler.subTypes}" var="subType" layout="unorderedList">
<h:outputText value="#{subType.fullSubtypeDisplayName}"/>
</t:dataList>
在引用托管bean值的JSP模板上使用JSTL <c:forEach>
时,您依赖于所使用的JSP版本以及JSF是否已事先自动处理托管bean。使用Servlet 2.5 / JSP 2.1时,您应该能够在JSTL标记中使用#{}
:
<ul>
<c:forEach value="#{memberHandler.subTypes}" var="subType">
<li><h:outputText value="#{subType.fullSubtypeDisplayName}"/></li>
</c:forEach>
</ul>
使用Servlet 2.4 / JSP 2.0时,您应该坚持使用${}
并使用<c:out>
而不是<h:outputText>
,并确保JSF已预先在视图模板中自动处理托管bean #{}
触发自动创建bean,而${}
则不触发。
<h:someComponent value="#{memberHandler.someThing}" />
...
<ul>
<c:forEach value="${memberHandler.subTypes}" var="subType">
<li><c:out value="${subType.fullSubtypeDisplayName}"/></li>
</c:forEach>
</ul>
战斧的<t:dataList>
将是一个更好的选择。