我创建了一个名为“Data”的类,并在JSP中调用它。当我完成它时,错误说,
Data cannot be resolved to a type
2: pageEncoding="ISO-8859-1"%>
3: <%@ page import= " Data" %>
4: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5: <jsp:useBean id="user" class="Data" scope="session"/>
6: <jsp:setProperty name="user" property="*"/>
7: <html>
8: <head>
public class Data
{
String Classname ;
String Individualname;
String Link;
public void Setclassname(String value)
{
Classname = value;
}
public String GetClassname()
{
return Classname;
}
}
jsp文件
<jsp:useBean id="user" class="Data" scope="session"/>
<jsp:setProperty name="user" property="*"/>
<body>
You entered<BR>
Class Name: <%= user.GetClassname() %><BR>
</body>
我没有部署项目......
答案 0 :(得分:4)
首先,您没有遵循getter / setter的bean命名约定和字段命名。
应该是:
public class Data {
String classname ;
String individualName;
String link;
public void setClassname(String value) {classname = value;}
public String getClassname() {return classname;}
}
或者className
但是Classname
套管表明它是一个类而不是属性。
要检索beans属性,您可以尝试:
<jsp:getProperty name="user" property="classname"/>
现在关于您的问题,我认为您的网页导入错误:
错误显示它无法识别查找类型Data
,这表明您的导入无效。 Sun建议您不要使用默认包。将类放入默认包中时,即使是IDE也会触发警告。
<%@ page import= " Data" %>
尝试输入Data
类的完全限定名称,即com.package.Data
<%@ page import= "com.package.Data" %>
答案 1 :(得分:2)
您不需要@page import
。这仅链接到 scriptlet 范围,而不是链接到taglib。您不想在此处使用 scriptlet 。以下应该有效:
<jsp:useBean id="user" class="com.example.Data" scope="session"/>
此外,只要您想在其他类中导入/重用它,就应该始终将类放入包中。无包装类在其他类中不可导入。添加package
声明并将该类放在文件夹结构中的正确位置。
package com.example;
public class Data {
// ...
}
手动构建时,它应该以{{1}}结尾。使用IDE(如Eclipse)构建时,将其放在/WEB-INF/classes/com/example/Data.class
中,IDE将担心编译并将其放在正确的位置。
您还应该真正修复变量和getter / setter的命名约定。关注Java Naming Conventions。
更新:
谢谢...我按照你在这里说的做了..仍然有同样的问题..现在错误说无法在'Ont.Data'类型的bean中找到关于属性'Data'的任何信息
首先:请,遵循Java命名约定。包名称不应以大写字母开头。此外,此错误消息表示命名属性没有getter。您还应该遵循Javabean规范。属性名称应以小写开头,例如src/com/example/Data.java
和getter方法应该是propertyname
,并且命名为public
,getPropertyname()
,然后是属性名为uppercased的第一个字母,其余部分与原始属性名称完全相同。这同样适用于像get
这样的设置者。
这是对setPropertyname()
课程的重写:
Data
大多数IDE,例如Eclipse,可以自动生成这种风格的Javabeans。利用它。