2011-11-14 5 views
0

J'essaye de travailler avec la balise JSF de p: poll, et en utilisant un échantillon de code que j'ai trouvé sur le net. Mais je continue à avoir une erreur. Le système ne semble pas trouver la propriété 'increment', bien qu'il existe dans le bean.p: sondage explose avec l'erreur 'propriété non trouvée'

J'utilise les suivantes:

<h:outputText id="txt_count" value="#{navBean.count}" /> 
<p:poll actionListener="#{navBean.increment}" interval="1000" update="txt_count" /> 

Il est à l'intérieur d'une vue, et la forme, comme ceci:

<f:view> 
<h:form> 

avec les balises de fermeture appropriées. Quand je l'ai frappé, il génère un « incrément » Propriété introuvable sur le type com.roberts.ui.NavBean

La méthode incrément est là:

public void increment(ActionEvent actionEvent) { 
    count++; 
} 

Qu'est-ce que je fais mal?

+0

Pouvez-vous publier la pile de pile? –

Répondre

0

J'ai finalement eu le temps de le faire. Voici une description complète & code:

Téléchargez la dernière prime face d'ici: http://www.primefaces.org/downloads.html

vous procurer les documents pdf, 3.0.RC2, d'ici: http://www.primefaces.org/documentation.html

Les xmlns pour cette dernière version est: xmlns: p = "http://primefaces.org/ui"

Dans le fichier xhtml (pour faire le sondage toutes les 3 secondes):

<h:form> 
<h:outputText id="txt_count" value="#{counterBean.count}" /> 
<p:poll listener="#{counterBean.increment}" interval="3" update="txt_count" /> 
</h:form> 

Dans le CounterBean:

private int count = 1; 

public int getCount() { 
    return count; 
} 

public void setCount(int count) { 
    this.count = count; 
} 

public void increment() { 
    setCount(getCount() + 1); 
} 

C'est tout. Cela fonctionne parfaitement.

0

Je pense que vous devez utiliser un panelgrid de cette façon:

<h:form> 
    <p:poll actionListener="#{navBean.increment}" interval="1000" update="panel_to_refresh" /> 
</h:form> 

<h:panelGrid id="panel_to_refresh"> 
    <h:outputText id="txt_count" value="#{navBean.count}" /> 
</h:panelGrid> 
+0

Merci pour votre réponse, Vincenzo, mais cela ne fonctionne pas. Je reçois toujours le même /pages/testing.xhtml: Propriété 'increment' introuvable sur le type com.ui.NavBean exception. – Herzog

+0

En outre: J'obtiens cet avertissement: "Cette page appelle l'espace de noms XML http://primefaces.prime.com.tr/ui déclaré avec le préfixe p mais aucune bibliothèque de balises n'existe pour cet espace de noms." Qu'est-ce que je rate? – Herzog

0

Utilisez la parenthèse dans la actionListener comme ceci:

<h:form> 
    <p:poll actionListener="#{navBean.increment()}" interval="1000" update="panel_to_refresh" /> 
</h:form> 
+0

Ok, mais maintenant j'obtiens un /pages/home.xhtml: Impossible de trouver la méthode [increment] avec les paramètres [0]. Si j'ajoute une méthode d'incrémentation sans paramètre (sans le paramètre ActionEvent en tant que paramètre), je n'obtiens pas d'exception, mais le sondage ne fait rien. En d'autres termes, il ne met pas à jour le champ de compte. – Herzog