【问题标题】:org.apache.jasper.JasperException: Cannot find any information on property 'sName' in a bean of type 'AddUserBean'org.apache.jasper.JasperException:在“AddUserBean”类型的 bean 中找不到关于属性“sName”的任何信息
【发布时间】:2010-07-12 19:51:14
【问题描述】:

我有一个带有用户注册表单的 html 页面。我收集的数据和行动是:

<form name="register" action="../JSP/Register.jsp" method="post">

然后在我的jsp页面上

<HTML>
<HEAD>
<TITLE>Reg JSP</TITLE>

    <LINK REL="stylesheet" TYPE="text/css" HREF="commonstyle.css">
</HEAD>
<BODY>
<jsp:useBean id ="user" class ="Data.AddUserBean" />
<jsp:setProperty name ="user" property="*" />

<H1>
    Customer Name :    <jsp:getProperty name = "user" property = "sName" /><br>
    Age :<jsp:getProperty name = "user" property = "iAge" /><br>
    Email:<jsp:getProperty name = "user" property = "sEmail" /><br>

</H1>

bean 在 Package Data 中;这是一个 java 类,为这三个属性 sName、iAge 和 sEmail 提供了 get 和 set 方法。

当我尝试执行代码时,它给了我错误:

HTTP 状态 500 -


输入异常报告

消息

描述服务器遇到一个 阻止它的内部错误() 完成此请求。

异常

org.apache.jasper.JasperException: 找不到任何关于 类型的 bean 中的属性“sName” 'Data.AddUserBean'

我正在使用 Tomcat 6 和 Eclipse IDE。

有什么建议吗???

【问题讨论】:

  • 感谢大家的帮助。和往常一样,Balus C 你是生命的救星!!!这是命名问题,在setter方法中,我错误地使用了大写名称。那是在制造麻烦。我把它改成小写,一切都开始工作了。再次感谢所有提供帮助的人。

标签: java jsp tomcat javabeans


【解决方案1】:

去掉Hungarian notation,这在Java 这样的OO 语言中没有意义,并且在Javabeans 和EL 中使事情变得不必要地复杂。还要去掉包名中的大写字符,根据Java Naming Conventions,这是不允许的。

package data;

public class AddUserBean { 
    private String name;
    private int age;
    private String email;

    public String getName() { return name; }
    public int getAge() { return age; }
    public String getEmail() { return email; }

    public void setName(String name) { this.name = name; }
    public void setAge(int age) { this.age = age; }
    public void setEmail(String email) { this.email = email; }
}

并按如下方式重写 JSP(大写的 HTML 元素也是也是 90 年代,您确定您正在阅读最新的教程/书籍吗?):

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Reg JSP</title>
        <link rel="stylesheet" type="text/css" href="commonstyle.css">
    </head>
    <body>
        <jsp:useBean id="user" class="data.AddUserBean" />
        <jsp:setProperty name ="user" property="*" />
        <h1>
            Customer Name: ${user.name}<br>
            Age: ${user.age}<br>
            Email: ${user.email}<br>
        </h1>
    </body>
</html>

在这里,Expression Language(EL,那些${} 的东西)让您可以轻松地即时访问任何范围内的 javabean。 jsp:getProperty 仅在没有 EL(或 JSTL)支持时才有用,但我们谈论的是十年前的时间。您当前使用的 servletcontainer 肯定支持 EL。

另见:

【讨论】:

  • 嗨,我尝试了所有方法并将所有属性重命名为小写。还是同样的错误。 Eclipse 是否需要一些特殊设置或映射?
  • 如果您遇到相同的错误,则说明您没有相应地更改代码或未正确重建/重新部署代码。清理所有内容并重试。
【解决方案2】:

如果您的AddUserBean 类具有属性NameAgeEmail,那么您为什么要求它提供sNameiAgesEmail?这是不一致的。

【讨论】:

  • 先生属性名是sName, iAge, sEmail
  • @Tara:好的,我看到了编辑。这些是非常奇怪的属性名称。请发布课程的实际来源,而不仅仅是描述它。
【解决方案3】:

试试

<jsp:getProperty name = "user" property = "SEmail" />

不过,我建议您只使用email,而不是sEmail

【讨论】:

    【解决方案4】:

    org.apache.jasper.JasperException:在 'AddUserBean' 类型的 bean 中找不到关于属性 'sName' 的任何信息

    是页面无法获取我的 java bean 文件吗?

    不,这看起来更像是您的 JSP 的问题。 Bean 属性名称 以小写字母开头(除非您花费大量精力 否则让它)。最初可能会令人困惑 按照惯例,小写字母在 getter 和 setter 中显示为大写 姓名;例如,getEmpName()setEmpName(String) 将是 属性 empName 的 getter 和 setter。

    如果 Jasper 找不到 bean 类,那么它会这样说;如果它 甚至检查特定属性的存在,然后它 已经自省了 bean 类。

    【讨论】:

      【解决方案5】:

      只需按照 JAVA 命名约定中的建议命名变量,即使用小写字母。 例如:私有字符串名称;

      私有字符串名称; -----------> 会抛出异常。

      【讨论】:

        猜你喜欢
        • 2023-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-07
        • 2017-04-07
        • 2016-06-22
        • 1970-01-01
        相关资源
        最近更新 更多