我有一个带有用户注册表单的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。
任何建议???
答案 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
类包含属性Name
,Age
和Email
,那么为什么要求sName
,iAge
和sEmail
?这是不一致的。
答案 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;将抛出异常。