Question

Je vais avoir quelques problèmes en boucle sur une table de hachage pour imprimer ses valeurs à l'écran. Quelqu'un pourrait-il vérifier mon code pour voir ce que je fais mal. Je ne peux pas l'air de trouver quelque chose de mal, mais il doit y avoir quelque chose.

Dans un servlet, je suis ce qui suit à la demande:

Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
req.setAttribute(facetField.getName(), facetValues);

Dans un cas "facetField.getName ()" correspond à la "discipline". Donc, dans ma page je suit:

<ui:repeat value="${requestScope.discipline}" var="item">
  <li>Item: <c:out value="${item}"/>, Key: <c:out value="${item.key}"/>, Value: <c:out value="${item.item}"/></li>
</ui:repeat>

La boucle est couru une fois, mais toutes les sorties sont vides?!? J'aurais au moins prévu quelque chose au point si elle est partie sur la boucle une fois. Vérification de la fenêtre de débogage pour Facelets, la discipline est là et sur la boucle. Imprimer les résultats de l'écran dans quelque chose qui ressemble à une carte pour moi (j'ai raccourci la sortie):

{300=0, 1600=0, 200=0, ... , 2200=0}

J'ai aussi essayé avec un c: forEach mais j'obtenir les mêmes résultats. Donc, ne quelqu'un a des idées où je vais mal?

Merci pour toute entrée, Lee

Était-ce utile?

La solution

<ui:repeat> accepte seulement la liste ou DataModel, non Définit ou Maps. Ceci est sur la feuille de route pour JSF 2.1.

Autres conseils

avec le soutien el 2.2 vous pouvez itérer cartes comme ci-dessous.

<ui:repeat value="#{myBean.stats.keySet().toArray()}" var="x">
    <h:outputText value="#{myBean.stats.get(x)}" /><br />
</ui:repeat>

Trois choses me viennent à:

1.

Le documentation ui: répéter doesn « t dire (il dit que ), mais je vois des usages UIRepeat DataModel comme modèle (à la manière de h: dataTable). Carte ne seront pas automatiquement enveloppées avec DataModel de type - le type est implicitement pris en charge. Vous devrez soit faire la valeur d'une instance de votre DataModel la mise en œuvre ou de leur fournir comme un type pris en charge implicitement (par exemple java.util.List ).

2.

Je ne suis pas sûr de ce que vous avez l'intention de ces valeurs à la carte à:

${item}
${item.key}
${item.item}

Si vous changez la "discipline" pour être de type > , vous pourriez lier à la et valeur propriétés:

${item.key}
${item.value}

Vous pouvez créer votre liste comme ceci:

Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
List<Map.Entry<String, String>> discipline
        = new ArrayList<Map.Entry<String, String>>(facetValues.entrySet());

3.

Le de href="http://wiki.java.net/bin/view/Projects/FaceletsFAQ#Why_doesn_t_my_c_if_ui_repeat_ui" suggère que les balises JSTL ne sont évalués au composant temps de création d'arbres. On ne sait pas pour moi si en utilisant c: comme un enfant de ui: répétition fonctionnera correctement. Vous devrez peut-être utiliser h: outputText à la place. (Je peux me tromper à ce sujet, bien sûr -. Je ne l'ai pas essayé)


  

Dans un servlet, j'ajoute ce qui suit à la demande

Cela ressemble à une étrange façon de mettre quelque chose dans le périmètre de demande JSF, mais je fais confiance que vous savez ce que vous faites!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top