IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

[JSTL] c:forEach et EL


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Par défaut [JSTL] c:forEach et EL
    Bonjour, je rencontre un problème avec une page JSP dans une application JEE par rapport au tag <c:forEach>.

    Je travaille avec JSF 1.2 et RichFaces, et je veux créer dynamiquement des onglets dans une JSP. J'utilise un <c:forEach> qui boucle sur une ArrayList présente dans mon backingBean. J'utilise avec ce tag une EL type JSF qui donne l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #{..} is not allowed in template text
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <%-- JSF taglibs --%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@taglib uri="http://richfaces.org/rich" prefix="rich" %>
    <%@taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
     
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:c="http://java.sun.com/jstl/core"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:h="http://java.sun.com/jsf/html">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
     
    <link rel="stylesheet" type="text/css" href="./default/css/ownStyle.css" />
     
    <title>Data Web Admin - Contents of the variables</title>
    </head>
    <body>
     
    <jsp:include page="./default/html/banner.html" />
     
    <div class="contents">
     
    <f:view>
     
    	<div class="inside2">
    		Choose the contents of the variables to create the file
    		<br /><br />
    	</div>
     
    	<h:messages />
    	<h:form>
     
     
    <h:panelGrid>
    		Periodicity of the data: <br />
    		<h:selectOneRadio id="list" value="#{dataBase.period}">
    			<f:selectItems value="#{dataBase.listPeriod}"/>
    		</h:selectOneRadio>
     
    		<br />
     
    		<h:commandLink action="#{dataBase.changeDisplay}" immediate="true">
            	<h:outputText value="Switch display"/> 
            </h:commandLink>
     
    		Contents: 
    		<br />
    		 <h:dataTable value="#{dataBase.displayContentList}" var="displayCL" binding="#{dataBase.table}" 
    		 	styleClass="dataTableContents" rules="all" rendered="#{dataBase.bool2}">
    		 	<h:column>
    			 	<rich:simpleTogglePanel switchType="client" label="Variable: #{dataBase.variableNames[dataBase.table.rowIndex]}"
    			 		styleClass="togglePanel">
    					<h:selectManyListbox id="selecVariables" 
    							value="#{dataBase.listSelContMatrix[dataBase.table.rowIndex]}" 
    							size="#{dataBase.tableSize[dataBase.table.rowIndex]}">
    							<f:selectItems value="#{displayCL}" />
    					</h:selectManyListbox>
    				</rich:simpleTogglePanel>					
    			</h:column>
    		</h:dataTable>
     
    <!-- code qui pose problème -->		
    		<rich:tabPanel switchType="client" rendered="#{ dataBase.bool2}">
    			<c:forEach items="#{dataBase.displayContentList}" var="displayCL" varStatus="status">
    		        <rich:tab label="Variable: ">
    		            <h:selectManyListbox id="selecVariables">
    							<f:selectItems value="#{dataBase.displayCubeNames}" />
    					</h:selectManyListbox>
    		        </rich:tab>
    			</c:forEach>
        	</rich:tabPanel>
    </h:panelGrid>
     
    		<br />
    		<br />
    		<h:commandButton value="Download File" action="#{dataBase.validateContent}"></h:commandButton>
    	</h:form>
     
     
    </f:view>
     
    </div>
    </body>
    </html>
    J'ai pourtant, il me semble, procédé comme sur un site dédié à RichFaces, la page dont je me suis inspiré est celle-ci:
    http://blog.hibernate.org/11633.lace

    Quand je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "items="#{dataBase.displayContentList}""
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "items="${dataBase.displayContentList}""
    là ça fonctionne, mais ce n'est pas beau, et après dans mon selectItem je ne peux pas récupérer l'élément numéro i de ma liste.

    Si quelqu'un avait une idée sur la question, cela m'arrangerait grandement!

    Merci!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Par défaut
    Je me souviens m'être battu un peu avec la jstl pour ça, au final j'ai utilisé cette solution:
    http://openfaces.org/demo/foreach/ForEach.jsf

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Par défaut
    Ok, merci de ton aide, mais je ne vois pas trop à quoi sert ce lien: il n'y a pas de code source pour la démo, aucun élément permettant de m'aider.
    J'ai essayé d'autres pages du site, mais pas un suel code source.

    Je pense avoir compris sur quel objet s'utilisait un forEach, mon ArrayList n'est pas vide, mon erreur ne vient donc pas de là.

    Merci de ton aide quand même.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Par défaut
    Le lien est celui de openFaces, qui propose un composant qui permet de boucler sur une collection, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <o:forEach items="#{clientAction.alphabet}" var="lettre">
    				<h:commandLink actionListener="#{clientAction.triRepertoire}"
    					value="#{lettre}" styleClass="tableTriAlphabet">
    				</h:commandLink>
    			</o:forEach>
    Dans ton premier message tu cites deux fois le même bout de code sur la fin, tu peux corriger stp pour bien cibler ton problème?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Par défaut
    Ok, merci, j'avais bien compris ce qu'était OpenFaces, mais impossible de trouver des exemples de code sur leur site, ni ailleurs. Cette librairie de tags n'a pas l'air bien documentée, c'est vrai? Je n'ai pas envie de deviner la façon de coder mon appli.

    Sinon, pour mon premier message, je n'ai pas écrit deux fois la même chose: une fois avec un "#", une fois avec un "$".

    Merci pour ton bout de code en tout cas, si je n'arrive vraiment pas à faire avec mon c:forEach, je prendrai la librairie OpenFaces. Ce serait juste un peu honteux d'importer une librairie entière pour ça.

    Merci pour ton aide!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 150
    Par défaut
    Bonjour;

    J'ai eu le même problème, du coup j'ai aussi voulu utiliser OpenFaces.

    Le problème est que même si j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:o="http://openfaces.org"
    ,
    l'IDE renvoit une erreur au niveau de o:forEach que je ne comprends pas :
    "The attributes for a standard action or an interpreted tag cannot be deferred expressions"

    Merci pour votre aide

Discussions similaires

  1. [JSTL] Problème foreach
    Par NameX dans le forum JSF
    Réponses: 2
    Dernier message: 06/09/2011, 15h54
  2. JSTL foreach et commandLink
    Par kha_yassine dans le forum JSF
    Réponses: 2
    Dernier message: 12/06/2008, 00h41
  3. [JSTL] connaitre taille de la collection items du forEach
    Par makohsarah dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/05/2008, 16h58
  4. Probleme JSTL <c:foreach >
    Par petitpasdelune dans le forum Struts 2
    Réponses: 17
    Dernier message: 27/06/2007, 13h32
  5. Réponses: 1
    Dernier message: 11/12/2006, 19h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo