带小面的循环

发布于 2024-12-23 09:43:40 字数 505 浏览 0 评论 0原文

我正在使用 jsf2facelets 开发应用程序。在我的视图之一中,我尝试显示数据库中的数据,并使用两个嵌套循环。第二个循环使用 var,它是为第一个循环声明的 var 的属性。

但这不起作用。

这是我的代码的相关部分:

<ui:repeat value="#{MyBean.Vect}" var="item">
     <h:outputText value="${item.attr}" /> <br />
     <ui:repeat value="#{item.nestedtVect}" var="product" >
         <h:outputText value="${product.name}" /> <br />
     </ui:repeat>
</ui:repeat>

第一个循环有效,但两者都无效。

I'm developing an application using jsf2 and facelets. In one of my views I try to display data from a database and I use two nested loops. The second loop uses a var which is an attribute of the var declared for the first loop.

But it's not working.

Here is the relevant part of my code:

<ui:repeat value="#{MyBean.Vect}" var="item">
     <h:outputText value="${item.attr}" /> <br />
     <ui:repeat value="#{item.nestedtVect}" var="product" >
         <h:outputText value="${product.name}" /> <br />
     </ui:repeat>
</ui:repeat>

The first loop works but not both.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

要走就滚别墨迹 2024-12-30 09:43:40

您确定 item.nestedtVect 不为 null 并且确实有项目吗?乍一看,您的 Facelet 似乎是正确的。

例如,考虑这个最小的示例:

支持 bean:

@ManagedBean
public class NestedLoopBacking {

    String[][] items = { {"A", "B"}, {"1", "2", "3"} };

    public String[][] getItems() {
        return items;
    }
}

Facelet:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:body>

        <ui:repeat value="#{nestedLoopBacking.items}" var="item">
            <ui:repeat value="#{item}" var="content">
                <h:outputText value="${content}" />
                <br />
            </ui:repeat>
        </ui:repeat>

    </h:body>
</html>

This Just Works™。您可能需要进行显式测试来查看嵌套集合是否为空:

<h:outputText value="Collection empty" rendered="#{empty item.nestedtVect}"/>
<h:outputText value="Collection not empty" rendered="#{!empty item.nestedtVect}"/>

ps

与问题无关,但您可能想查看您的命名。 MyBean.Vect 并不是一个真正好的名字,item.attr 中的 attr 也不是一个好名字。此外,您似乎没有明显的原因混合了延迟语法和立即语法(#{}${})。

Are you sure item.nestedtVect is not null and actually has items? Your Facelet seems to be correct at first sight.

E.g. consider this minimal example:

Backing bean:

@ManagedBean
public class NestedLoopBacking {

    String[][] items = { {"A", "B"}, {"1", "2", "3"} };

    public String[][] getItems() {
        return items;
    }
}

Facelet:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:body>

        <ui:repeat value="#{nestedLoopBacking.items}" var="item">
            <ui:repeat value="#{item}" var="content">
                <h:outputText value="${content}" />
                <br />
            </ui:repeat>
        </ui:repeat>

    </h:body>
</html>

This Just Works™. You might want to put in an explicit test to see if your nested collection is empty or not:

<h:outputText value="Collection empty" rendered="#{empty item.nestedtVect}"/>
<h:outputText value="Collection not empty" rendered="#{!empty item.nestedtVect}"/>

p.s.

Unrelated to the question, but you might want to look at your naming. MyBean.Vect is not a really good name, and neither is attr in item.attr. Also, you seem to mix deferred and immediate syntax (#{} and ${}) for no apparent reason.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文