gpt4 book ai didi

jsf - p :commandButton action throws javax. el.PropertyNotFoundException

转载 作者:行者123 更新时间:2023-12-04 21:05:54 25 4
gpt4 key购买 nike

错误在:

javax.el.PropertyNotFoundException: /index.xhtml: Property 'validar' not found on type fya.beanpages.IndexBean

它看起来没有找到 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,请确保绝对不要触及 Build Path 设置,如果您曾经不小心尝试解决它,请将其全部撤消!),以及确保项目已正确重建,服务器的工作文件夹已正确清理,并且服务器中的部署确实在正确的位置包含 PrimeFaces JAR 文件。

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

关于jsf - p :commandButton action throws javax. el.PropertyNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17962963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com