2012-04-14 9 views
0

Ich versuche, eine JSF-Anwendung zu erstellen, die bei Seitenaktualisierung den Trefferzähler erhöht und zwei Zufallszahlen generiert. Was soll auf dem Fenster angezeigt werden kann wie folgt aussehen:Zufallszahl mit Bohnen

Auf Ihrem Auf Ihrer Rolle x Sie x und x

Für dieses Programm geworfen habe ich beschlossen, zwei Beans zu erstellen, eine zu halten den Seitenauffrischungszähler und einen zum Generieren einer Zufallszahl. Diejenigen, sehen wie folgt für den Moment:

CounterBean.java

package diceroll; 

public class CounterBean 
{ 
    int count=0; 
    public CounterBean() 
    { 

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

     return count; 
    } 
} 

RandomNumberBean.java

package diceroll; 

import java.util.Random; 

public class RandomNumberBean { 
    int rand=0; 
    Random r = new Random(); 
    public RandomNumberBean() 
    { 
     rand = r.nextInt(6); 
    } 
    public void setNextInt(int rand) 
    { 
     this.rand=rand; 
    } 
    public int getNextInt() { 
     return rand; 
    } 
} 

Ich habe dann eine index.jsp erstellt die obige Nachricht angezeigt werden soll.

<html> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> 
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> 
<f:view> 
    <head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Roll the Dice</title> 
    </head> 
    <body> 
     <h:form> 
      <p> 
       On your roll # 
       <h:outputText value="#{CounterBean.count} " /> 
       you have thrown <h:outputText value="#{RandomNumberBean.rand}" />and <h:outputText value="#{RandomNumberBean.rand} " /> 
      </p> 
     </h:form> 
    </body> 
</f:view> 
</html> 

Allerdings, wenn ich die Anwendung ausführen, bekomme ich die folgende Meldung:

org.apache.jasper.el.JspPropertyNotFoundException: /index.jsp(14,20) ‚# {RandomNumberBean .rand}‘Property 'rand' nicht auf Typ gefunden diceroll.RandomNumberBean

verursacht durch: org.apache.jasper.el.JspPropertyNotFoundException - /index.jsp(14,20) '# {RandomNumberBean.rand}' Eigenschaft 'rand' wurde nicht gefunden bei Typ diceroll.RandomNumberBean

Ich nehme an, es ist ein Fehler, mit meiner faces-config.xml-Datei, also werde ich das auch hier veröffentlichen, sehen, wenn jemand etwas Hilfe bieten kann:

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
    version="2.0"> 
    <managed-bean> 
    <managed-bean-name>CounterBean</managed-bean-name> 
    <managed-bean-class>diceroll.CounterBean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
    </managed-bean> 
    <managed-bean> 
    <managed-bean-name>RandomNumberBean</managed-bean-name> 
    <managed-bean-class>diceroll.RandomNumberBean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
    </managed-bean> 
</faces-config> 
+0

nicht 'rand' aber' nextInt':

So könnte man es auch mit arbeiten. Und verwaltete Bean-Eigenschaft fehlt. –

+0

Das scheint teilweise zu funktionieren, weil ich jetzt keine Fehlermeldung bekomme! Aber die einzige Zahl, die ich bekomme, ist 1. So sieht die Nachricht so aus: 'Auf deiner Rolle # 1 hast du 1 und 1 geworfen ' ' Auf deiner Rolle # 2 hast du 1 und 1 geworfen' und so weiter –

+0

Ich habe es repariert. Ich musste nur "rand = r.nextInt (6);" in meinen Getter bewegen! –

Antwort

2

Wenn Sie aus der Sicht auf ein Bean-Mitglied xxx zugreifen möchten, benötigen Sie eine Methode getXxx, damit es funktioniert. Die Hauptstadt X im Getter-Methodenname ist wichtig.

Um auf int rand zugreifen zu können, benötigen Sie eine public int getRand() Methode.

Es wird auch ohne das Mitglied xxx auch funktionieren. Der Getter getXxx ist ausreichend.

<h:outputText value="#{RandomNumberBean.nextInt}" />