【问题标题】:ui:repeat does not work in JSF 2.0?ui:repeat 在 JSF 2.0 中不起作用?
【发布时间】:2012-09-29 12:10:11
【问题描述】:

在我的页面中,<ui:repeat> 不起作用。 <c:forEach> 是工作。我不知道我错过了什么?否则,<ui:repeat> 不工作 JSF 2.0 吗?

mypage.xhtml(它不起作用)

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html" 
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:c="http://java.sun.com/jsp/jstl/core"
                template="/common/commonLayout.xhtml">
    <ui:define name="content">
        <h:form id="toDeleteForm">
                <table>
                    <tr>
                        <td>
                            <ui:repeat value="#{DatePick.timeSlot}" var="timeSlot">
                                <h:outputText value="#{timeSlot}" style="font-size:12px;"/><br/>
                            </ui:repeat>
                        </td>
                    </tr>
                </table>
        </h:form>
    </ui:define>
</ui:composition>

mypage.xhtml(没关系)

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html" 
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:c="http://java.sun.com/jsp/jstl/core"
                template="/common/commonLayout.xhtml">
    <ui:define name="content">
        <h:form id="toDeleteForm">
                <table>
                    <tr>
                        <td>
                            <c:forEach items="#{DatePick.timeSlot}" var="timeSlot">
                                <h:outputText value="#{timeSlot}" style="font-size:12px;"/>
                            </c:forEach>
                        </td>
                    </tr>
                </table>
        </h:form>
    </ui:define>
</ui:composition>

DatePick.java

@Name("DatePick")
@Scope(ScopeType.CONVERSATION)
public class DatePick {

    public List<String> getTimeSlot() {
        // list form database
        return timeSlot;
    }
}

我的页面中的输出将如下所示。

    01/01/2012
02/01/2012
03/01/2012
04/01/2012
05/01/2012

【问题讨论】:

  • 你得到了什么结果? 是打印到您的 HTML 还是抛出错误?
  • @w4rumy,我没有收到任何错误。它只是没有在 UI 中显示我的输出。
  • “UI 中的输出”是什么意思?你能显示 HTML 输出吗?
  • 我想知道它是否与会话范围不同(ui 重复)
  • 如果将&lt;ui:repeat&gt; 替换为&lt;h:dataTable&gt; 会怎样? @Name@Scope 注释是什么?这无法识别为标准 Java EE 6 注释。您使用什么第三方库来管理您的 bean?如果您只使用 JSF @ManagedBean 或 CDI @Named 等 Java EE 6 标准注解会怎样?

标签: java jsf-2 seam facelets


【解决方案1】:

我使用了 Java EE 6 注释,它在 GlassFish 3.1.2.2 和 Mojarra 2.1.6 上运行良好。我确实修改了你的代码,但在这里。

@Named
@ConversationScoped
public class DatePick implements Serializable {

    private static final long serialVersionUID = -5061581851476260511L;

    public DatePick() {
    }

    public List<String> getTimeSlot() {
        List<String> dates = new ArrayList<String>() {
            private static final long serialVersionUID = 3109256773218160485L;

            {
                add("01/1/2012");
                add("02/1/2012");
                add("03/1/2012");
                add("04/1/2012");
                add("05/1/2012");
                add("06/1/2012");
                add("07/1/2012");
                add("08/1/2012");
                add("09/1/2012");
                add("10/1/2012");
                add("11/1/2012");
                add("12/1/2012");
            }
        };
        return dates;
    }
}

这是页面...

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./WEB-INF/templates/main.xhtml"
                xmlns:h="http://java.sun.com/jsf/html">
    <ui:define name="content">
        <table>
            <tr>
                <td>
                    <ui:repeat value="#{datePick.timeSlot}" var="timeSlot">
                        <h:outputText value="#{timeSlot}"/><br/>
                    </ui:repeat>
                </td>
            </tr>
        </table>
    </ui:define>
</ui:composition>

结果是预期的输出。 注意:我没有开始或结束对话。

在 2.1 的几个不同版本中修复了一些问题。您需要查看特定版本的发行说明和已解决的问题。

更新

我在这里发布了完整的解决方案:stackoverflow-ui-repeat-example

【讨论】:

    猜你喜欢
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2011-11-26
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多