当前位置: 首页 > 知识库问答 >
问题:

方法未找到异常,而调用方法在springboot

苏磊
2023-03-14
Feb 17, 2022 10:06:40 AM com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{loginBean.validate}: javax.el.MethodNotFoundException: /index.xhtml @23,80 action="#{loginBean.validate}": Method not found: ritu.login.User@d570e4f.validate()
javax.faces.FacesException: #{loginBean.validate}: javax.el.MethodNotFoundException: /index.xhtml @23,80 action="#{loginBean.validate}": Method not found: ritu.login.User@d570e4f.validate()
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:110)

这是我的登录名。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 lang="en" xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<body>
<h:form>
 <p:panel header="Login">  
 
        <p:messages id="msgs" showDetail="true"/>
        <h:outputText value="id" />
        <h:inputText id="id" value="#{loginBean.id}"></h:inputText>
        <h:message for="id"></h:message>
        <br></br>
        <br></br>

        <h:outputText value="name" />
        <h:inputText id="name" value="#{loginBean.name}"></h:inputText>
        <h:message for="name"></h:message>

        <p:commandButton action="#{loginBean.validate}" value="login" update="msgs" ></p:commandButton>
        </p:panel>
        <br></br>
        <br></br>
</h:form>
</body>
</html>

这是我的课

package ritu.login;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
@ManagedBean(name = "loginBean")
@SessionScoped
public class User implements Serializable{
    
    private static final long serialVersionUID = -7250065889869767422L;

    @Id
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String validate(Long id, String name) {

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/any", "root", "jaygurudev1@");
            PreparedStatement ps = con.prepareStatement("Select id,name from user where id=? and name=?");
            ps.setLong(1, id);
            ps.setString(2, name);
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                return "index.xhtml";
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,
                        "Incorrect Username and Passowrd", "Please enter correct username and Password"));
                return "login.xhtml";
            }

        } catch (Exception e) {
            System.out.println("in exception");
        }
        return "ok";

    }
}

为什么会出现这个异常,这是什么意思?我以前在命令按钮中使用过h标签,但它不起作用

原因:javax。面孔。艾尔。MethodNotFoundException:javax。艾尔。MethodNotFoundException:/index。xhtml@23,80 action=“#{loginBean.validate}”:未找到方法:ritu。登录。User@d570e4f.validate()在javax。面孔。组成部分MethodBindingMethodExpressionAdapter。在com上调用(MethodBindingMethodExpressionAdapter.java:91)。太阳面孔。应用ActionListenerImpl。processAction(ActionListenerImpl.java:102)。。。还有29个原因:javax。艾尔。MethodNotFoundException:/index。xhtml@23,80 action=“#{loginBean.validate}”:未找到方法:ritu。登录。User@d570e4f.validate()在com上。太阳面孔。小脸蛋。艾尔。泰格的表情。在javax上调用(TagMethodExpression.java:109)。面孔。组成部分MethodBindingMethodExpressionAdapter。调用(MethodBindingMethodExpressionAdapter.java:87)。。。30多

2022年2月17日上午10:06:40。太阳面孔。上下文例外HandlerImpl日志1100:JSF1073:javax。面孔。在处理INVOKE_应用程序5时捕获到FacesException:UIComponent ClientId=,Message=#{loginBean.validate}:javax。艾尔。MethodNotFoundException:/index。xhtml@23,80 action=“#{loginBean.validate}”:未找到方法:ritu。登录。User@d570e4f.validate()2022年2月17日上午10:06:40。太阳面孔。上下文例外HandlerImpl日志

共有1个答案

蔚弘量
2023-03-14

您必须在login.xhtml中的#{loginBean.validate}附近传递参数。

更改:

<p:commandButton action="#{loginBean.validate}" value="login" update="msgs" ></p:commandButton>

到:

<p:commandButton action="#{loginBean.validate(loginBean.id, loginBean.name)}" value="login" update="msgs" ></p:commandButton>
 类似资料:
  • 问题内容: 在NetBeans中,如何找出在哪里调用方法? 我在一个大型项目中有一个特定的方法,无法找到它的调用位置。 问题答案: 右键单击方法名称时,会出现“ 查找用法” 菜单项。 或将光标放在方法名称上,然后按+ (查找用法)和++ + (显示“查找用法”结果)。

  • 当我将其更改为list时,出现以下错误: 这里是我的小部件构建: 对于API、模型和其他函数,您可以在未处理的异常中检查我的另一篇文章:键入“\u InternalLinkedHashMap”

  • 我正在和Java8一起做项目,发现了一个我无法理解的情况。 我有这样的代码: 这段代码运行良好,但我可以使用方法引用重写它: 而这段代码没有编译,在方法引用中给出了不兼容的抛出类型*SomeException*。 IDEA还向我提供了错误

  • 我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定