在jsp中调用了类

时间:2010-07-04 11:36:04

标签: java jsp

我创建了一个名为“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>

我没有部署项目......

2 个答案:

答案 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,并且命名为publicgetPropertyname(),然后是属性名为uppercased的第一个字母,其余部分与原始属性名称完全相同。这同样适用于像get这样的设置者。

这是对setPropertyname()课程的重写:

Data

大多数IDE,例如Eclipse,可以自动生成这种风格的Javabeans。利用它。

另见: