我正在尝试创建一个jsf应用程序,该应用程序在页面刷新时会增加点击计数器并生成两个随机数。窗口上应显示的内容可能如下所示:
在您的x上掷出x和x
对于这个程序,我决定创建两个Bean,一个用于保存页面刷新计数器,另一个用于生成随机数。这些现在看起来像这样:
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上找不到属性'rand'
造成原因:
org.apache.jasper.el.JspPropertyNotFoundException-/index.jsp(14,20)'#{RandomNumberBean.rand}'属性'rand'在类型diceroll.RandomNumberBean上找不到
我想我的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>
最佳答案
如果要从视图访问bean成员xxx
,则需要方法getXxx
使其起作用。吸气方法名称中的大写字母X
很重要。
因此,要访问int rand
,您将需要一个public int getRand()
方法。
即使没有成员xxx
,它也可以正常工作。吸气剂getXxx
就足够了。
因此,您还可以使其与以下产品一起使用:
<h:outputText value="#{RandomNumberBean.nextInt}" />