包含和h:datatable的递归



我在尝试递归地包含页面时遇到了一些麻烦。问题是,所有的包括实际发生,但有一些事情与h:dataTable,使它所以第二个包含的数据表内容不显示。我猜这个问题来自于var post与自身并发。

在page。xhtml中,我调用post_view2。xhtml的include:

<ui:include src="/template/includes/post_view2.xhtml" >
    <ui:param name="postList" value="#{watchThread.listeFirstPosts}"></ui:param>
    <ui:param name="count" value="8"></ui:param>            
</ui:include> 

Count设置为8

这是post_view .xhtml:

<ui:composition xmlns=....>
<h:dataTable var="post" value="#{postList}" styleClass="fullWidth">
<h:column>      
            #{post.posts.size()} <!-- gives a size higher than 0 -->
    <h:outputText value="#{watchThread.sanitize(post.content)}"/>
    <c:if test="${count gt 0}">                 
        <ui:include src="/template/includes/post_view2.xhtml">
            <ui:param name="postList" value="#{post.replies}"></ui:param>
            <ui:param name="count" value="${count-1}"></ui:param>
        </ui:include>
    </c:if>
</h:column>
</h:dataTable>
</ui:composition>

注意,在第一个include中,post变量等于一个列表。在第二个包含中,我试图使它等于另一个列表,我认为这就是导致问题的原因。我不知道为什么,也不知道如何解决它。另一方面,我使用jstl c:if,但如果有另一种解决方案是纯jsf,包括primefaces,我会采取它。

我找到了一个变通方法,但我将让这个问题没有答案。

而不是使用DataTable我使用jsp标记forEach,它的工作。

所以不用这个:

<h:dataTable var="post" value="#{postList}">

我有:

<c:forEach var="post" items="#{postList}">

我不知道为什么这个工作和dataTable不。如果有人知道,请展开

相关内容

  • 没有找到相关文章

最新更新