2011-08-25 83 views
0

我只是想迭代一个列表,我不想要任何html吐出, 所以datalist和c:ForEach不是一个选项。 原因是,该样机已经制造和规则,我们必须使用 <ul><li>,所以我不能使用任何创建表。寻找类似于ui的东西:在JSP中重复使用

我已经调查和UI:重复会做的工作,但它不会在JSP工作。

我希望有类似Struts中的逻辑:因为迭代我只需要在一个列表上迭代 。

感谢您的帮助。

约翰

回答

1

这究竟你的意思“DataList控件”,但Tomahawk's <t:dataList>如果省略layout的属性不发出任何默认HTML,所以它应该制定出你还不完全清楚。

<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> 

当使用JSTL <c:forEach>在JSP模板指托管bean值,你是依赖于使用的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>将是一个更好的选择在这里。

+0

我尝试的第一个例子,它显示了列表中的子弹,但没有出来,在的outputText,也有列表中的2项,它显示了只有一颗子弹 – John

+0

的T :没有任何东西的datalist仍然创建一个unorderedList – John

+0

那么这只是你的错误解释/配置错误 – BalusC

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> 
+0

也许我记得正确,问题是,它可能无法使用h工作:的outputText – John

+0

@约翰:你错了。也许你对在其他JSF迭代组件中使用JSTL标签的流程问题感到困惑,比如''。 – BalusC

+0

我以为你想在基于JSP的应用程序中使用某些东西,而不是“使用JSP的JSF”应用程序。我不知道JSF。抱歉。 –

相关问题