2014-10-22 5 views
1

Имея этот Xhtml код:Что происходит с TabView Primefaces компонента

<?xml version='1.0' encoding='UTF-8' ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" 
     xmlns:p="http://primefaces.org/ui"> 
    <h:head> 
     <title>Simple JSF</title> 
    </h:head> 
    <h:body> 
     <h:form> 
      <ui:repeat value="#{cart.items}" var="item"> 
         <h:panelGrid columns="2" cellpadding="10"> 
          <h:outputText value="#{item}" /> 
         </h:panelGrid> 
      </ui:repeat> 
      </h:form> 
    </h:body> 
</html> 

И боб:

import java.util.ArrayList; 
import java.util.List; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
@ManagedBean(name = "cart") 
@SessionScoped 
public class CartBean { 
private List<String> items; 
public CartBean() { 
    items = new ArrayList<>(); 
    items.add("shirt"); 
    items.add("skirt"); 
    items.add("trouser"); 
    } 
public List<String> getItems() { 
    return items; 
    } 
} 

Показывает три соответствующие пункты в outputText: "рубашка", "юбки" и " брючный» Но, изменив тело, как показывает XHTML:

<h:body> 
     <h:form> 
      <p:tabView > 
       <ui:repeat value="#{cart.items}" var="item"> 
        <p:tab title="#{item}"> 
         <h:panelGrid columns="2" cellpadding="10"> 
          <h:outputText value="#{item}" /> 
         </h:panelGrid> 
        </p:tab> 
       </ui:repeat> 
      </p:tabView> 
     </h:form> 
    </h:body> 

Показаны TabView ш нажмите только одну вкладку (вместо трех) и без текста на вкладке. Я не понимаю, зачем потерять данные?

ответ

1

решаемые с помощью TabView владельца итератору вместо Ui: повторить и добавив в файл web.xml:

<context-param> 
     <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> 
     <param-value>true</param-value> 
</context-param> 
1

Вы не используете ui: повторите внутри tabview для создания вкладок. TabView имеет свою отличительную особенность итерации:

<p:tabView value="#{cart.items}" var="item"> 
    <p:tab title="#{item}"> 
     <h:outputText value="#{item}"/> 
     ... etc. 
    </p:tab> 
</p:tabView> 
+1

я уже пробовал раньше, но я получаю сообщение об ошибке: com.sun.faces.facelets.compiler.UIInstructions нельзя передать в org.primefaces.component.tabview.Tab – Juaky73

Смежные вопросы