2012-04-14 36 views
0

我想創建一個jsf應用程序,它在頁面刷新時增加計數器並生成兩個隨機數。什麼應該被顯示在窗口中可以是這個樣子:使用豆的隨機數

在您在您的卷X你扔x和x

對於這個節目,我決定創建兩個豆,一個持有頁面刷新計數器和一個生成一個隨機數。那些看起來像這樣的時刻:

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; 
    } 
} 

我已經然後創建的index.jsp顯示上述消息。

<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> 

然而,當我運行應用程序,我得到以下信息:

org.apache.jasper.el.JspPropertyNotFoundException:/index.jsp(14,20)「#{RandomNumberBean .rand}」屬性 '蘭特' 不是類型發現diceroll.RandomNumberBean

造成的: org.apache.jasper.el.JspPropertyNotFoundException - /index.jsp(14,20) '#{} RandomNumberBean.rand'在類型diceroll.RandomNumberBean上找不到屬性'rand'

我想有一個與我的faces-config.xml文件是錯誤的,所以我將在此位置爲好,看是否有人可以提供一些幫助:

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

不'rand'但'nextInt'。並且託管bean屬性丟失。 – 2012-04-14 17:30:17

+0

這似乎是部分工作,因爲現在我沒有收到錯誤信息!但我得到的唯一的數字是1.所以消息看起來像這樣: '在你的卷#1上拋出1和1' '在你的卷#2上拋出1和1' 等等 – 2012-04-14 17:33:52

+0

我修好了它。我只需要移動'rand = r.nextInt(6);'在我的getter中! – 2012-04-14 17:38:46

回答

2

如果你想從視圖訪問一個bean成員xxx,你需要一種方法getXxx得到它的工作。 getter方法名稱中的首字母X非常重要。

所以爲了訪問int rand你需要一個public int getRand()方法。

它甚至沒有成員xxx正常工作。吸氣劑getXxx就足夠了。

所以,你還可以使它與工作:

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