[英]I can not do my work Event - JSF - exception say Property 'sorteiaBotao' not found on type BotaoBean
这是我的代码:botoes.xhtml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h=" http://java.sun.com/jsf/html"
xmlns:f=" http://java.sun.com/jsf/core">
<h:head>
<title>K19 - Eventos</title>
</h:head>
<h:body>
<h:form>
<h:commandButton id="botao-jonas" value="Jonas" disabled="false" actionListener="#{BotaoBean.sorteiaBotao}" />
<h:commandButton id="botao-marcelo" value="Marcelo" disabled="true" actionListener="#{BotaoBean.sorteiaBotao}" />
<h:commandButton id="botao-rafael" value="Rafael" disabled="true" actionListener="#{BotaoBean.sorteiaBotao}" />
</h:form>
</h:body>
</html>
和BotaoBean.java:
import javax.faces.bean.ManagedBean;
import javax.faces.component.*;
import javax.faces.event.ActionEvent;
@ManagedBean(name="BotaoBean")
public class BotaoBean {
public void sorteiaBotao(ActionEvent event) {
UIComponent formulario = event.getComponent().getParent();
UIComponent botaoJonas = formulario.findComponent("botao-jonas");
UIComponent botaoMarcelo = formulario.findComponent("botao-marcelo");
UIComponent botaoRafael = formulario.findComponent("botao-rafael");
botaoJonas.getAttributes().put("disabled",true);
botaoMarcelo.getAttributes().put("disabled",true);
botaoRafael.getAttributes().put("disabled",true);
double numero = Math.random();
if (numero<1.0/3.0) {
botaoJonas.getAttributes().put("disabled",false);
} else if (numero<2.0/3.0) {
botaoMarcelo.getAttributes().put("disabled",false);
} else {
botaoRafael.getAttributes().put("disabled",false);
}
}
}
我运行并给出以下异常:
javax.servlet.ServletException:/botoes.xhtml:在类型BotaoBean上找不到属性'sorteiaBotao'javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
我不知道该怎么解决。 我做了与教程示例相同的操作。 谁能帮我?
谢谢!
异常表明actionListener="#{BotaoBean.sorteiaBotao}"
被视为值表达式,而不是方法表达式(它正在寻找属性,因此它试图仅打印getter返回的值,这显然不会根本不存在;正如例外所言)。
这又表明JSF渲染器无法识别整个组件和属性。
反过来,这表明未(正确)声明组件的h:
标记库。
实际上,您在taglib URI中有一个悬空的空间:
xmlns:h=" http://java.sun.com/jsf/html"
这个空间不属于taglib URI。 相应地修复它:
xmlns:h="http://java.sun.com/jsf/html"
不要忘记对f:
标记库做同样的事情,它的URI中还有一个错位的空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.