2012-10-09 40 views
2

在我的頁面中,<ui:repeat>不起作用。 <c:forEach>是工作。我不知道我錯過了什麼?否則,不工作JSF 2.0 <ui:repeat>ui:重複在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 
+0

什麼是你所得到的結果呢?是打印到您的HTML或者是拋出的錯誤? – Uooo

+0

@ w4rumy,我沒有得到任何錯誤。它只是不會在UI中顯示我的輸出。 – CycDemo

+0

「UI中的輸出」是什麼意思?你能顯示HTML輸出嗎? – Uooo

回答

0

我使用了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版本中存在一些問題。您需要查看特定版本的發行說明並解決問題。

UPDATE

我這裏張貼了完整的解決方案:stackoverflow-ui-repeat-example