p: commandButton操作引发javax.el.PropertyNotFoundException



错误在:中

javax.el.PropertyNotFoundException:/index.xhtml:在类型fya.beanpages.IndexBean 上找不到属性"validar"

它看起来没有找到validar方法。它认为这是一种属性。

这是xhtml:

<!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:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui">
<h:head>  
  <title>FYA WEB</title>
</h:head>  
<h:body>  
    <ui:composition template="/base/base.xhtml">
    <ui:param name="title" value="FYA Web Login"/>
        <ui:define name="content">
            <h:form id="form">  
                <p:panel id="panel" header="Inicio Sesión">  
                    <p:messages id="panelmsg"/>  
                    <h:panelGrid columns="3">  
                        <h:outputLabel for="nomUsuario" value="Usuario: *" />  
                        <p:inputText id="nomUsuario" value="#{login.usu.nomusuario}" required="true" label="Usuario"/>
                        <h:outputLabel for="pwdUsuario" value="Contraseña: *" />  
                        <p:password id="pwdUsuario" value="#{login.usu.contraseña}" label="Contraseña" required="true"/>  
                    </h:panelGrid>  
                    <p:commandButton id="btnIniciar" value="Iniciar Sesión" action="#{login.validar}" update="panelmsg" ajax="true"/>  
                </p:panel>  
            </h:form>
        </ui:define>
    </ui:composition>        
</h:body>

这是托管Bean。

package pe.edu.cibertec.managed;
@ManagedBean(name="login")
public class LoginBean {
private Usuario usuario=new Usuario();
private static LoginService loginService= new LoginServiceImpl();
public Usuario getUsuario() {
    return usuario;
}
public void setUsuario(Usuario usuario) {
    this.usuario = usuario;
}
public String validar() throws Exception {
    if(loginService.validar(usuario))
        return "paginas/principal";
    else{
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Datos Incorrectos"));
        return null;
    }
}

}

也许我觉得我做错了什么,你能帮帮我吗?

如果没有正确安装PrimeFaces,就会发生这种情况。通过这种方式,所有的<p:xxx>标记都被视为模板文本(这意味着,它们不会被Facelets解析为JSF组件,而是直接打印到HTML输出中)。默认情况下,模板文本中的所有EL表达式都解析为需要getter方法的属性值表达式(如<p>blah #{bean.foo} blah</p>)。所有最初表示方法表达式的EL表达式都会抛出这个异常,因为在bean中找不到getter。

要正确安装PrimeFaces,请确保JAR文件位于webapp的/WEB-INF/lib中(如果您使用的是Eclipse之类的IDE,请确保绝对不要触摸构建路径设置,如果您曾在不小心的尝试中篡改过该设置,请全部撤消!),并确保项目已正确重建,服务器的工作文件夹已正确清理,服务器中的部署确实在正确的位置包含PrimeFacesJAR文件。

需要考虑的另一件事是,在PrimeFaces3.0中引入了taglib URI http://primefaces.org/ui。因此,如果您碰巧有一个PrimeFaces2.x或更早版本的JAR,那么您也可能面临这个问题。您需要将PrimeFaces至少升级到3.0,或者重新使用2.x兼容的taglib URI http://primefaces.prime.com.tr/ui

相关内容

  • 没有找到相关文章

最新更新