我有一个带有用户注册表格的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位于包数据中;这是一个java类,它具有sName、iAge和sEmail这三个属性的get和set方法。
当我试图执行代码时,它会给我带来错误:
HTTP Status 500 -
类型异常报告
消息
服务器遇到一个内部错误(),无法完成此请求。
异常
org.apache.jasper.JasperException:无法在“Data.AddUserBean”类型的bean中找到有关属性“sName”的任何信息
我正在使用Tomcat 6和Eclipse。
有什么建议吗?
发布于 2010-07-12 13:06:09
摆脱匈牙利符号,这在像Java这样的面向对象语言中是没有意义的,而且在Javabeans和EL中也会造成不必要的复杂。此外,去掉包名中的大写字符,这是不允许的,因为根据Java命名约定。
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>
在这里,表达语言 (EL,那些${}
)为您提供了在任何范围内对javabean的便捷访问。只有在没有EL (或JSTL)支持的情况下,jsp:getProperty
才是有用的,但接下来我们要讨论的是十年前的那个时候。当然,您目前使用的Surely容器支持EL。
另请参阅:
发布于 2010-07-12 11:56:46
如果您的AddUserBean
类具有Name
、Age
和Email
属性,那么为什么要向它请求sName
、iAge
和sEmail
?这是不一致的。
发布于 2010-07-12 12:52:20
试一试
<jsp:getProperty name = "user" property = "SEmail" />
不过,我建议您使用简单的email
,而不是sEmail
。
https://stackoverflow.com/questions/3231750
复制