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

时间:2010-07-12 19:51:15

标签: java jsp tomcat javabeans

我有一个带有用户注册表单的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。

任何建议???

5 个答案:

答案 0 :(得分:2)

摆脱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,那些${}事物)使您可以在任何范围内轻松即时访问javabeans。 jsp:getProperty仅在没有EL(也没有JSTL)支持的情况下才有用,但之后我们讨论的是十年前的时间。当然,您当前使用的servlet容器支持EL。

另见:

答案 1 :(得分:0)

如果您的AddUserBean类包含属性NameAgeEmail,那么为什么要求sNameiAgesEmail?这是不一致的。

答案 2 :(得分:0)

尝试

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

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

答案 3 :(得分:0)

  

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

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

不,它看起来更像是JSP的问题。 Bean属性名称 以小写字母开头(除非你付出相当大的努力 否则)。最初的可能令人困惑 按惯例的小写字母在getter和setter中显示为大写 名称;例如,getEmpName()setEmpName(String)就是 属性empName的getter和setter。

如果贾斯帕无法找到豆类,那么它就会说出来;如果它 甚至检查某个特定财产的存在 已经内省了豆类。

答案 4 :(得分:0)

按照JAVA命名惯例(即小写字母)中的建议命名变量。 例如:私人字符串名称;

私人字符串名称; -----------&GT;将抛出异常。