无法使用<jsp:useBean>标记: "Bean cannot be resolved to a type"。

4

我只是在玩弄JSP。我只想测试一些的东西,但是我做不到。每次使用都会出错。即使只有这个,我也会出错:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Test</title>
  </head>
  <body>
    <jsp:useBean id="mybean" class="Users" scope="session" >
      <jsp:setProperty name="mybean" property="name" value="Hello world" />
    </jsp:useBean>
  </body>
</html>

没有使用<jsp:useBean>时,它可以正常运行。但是使用<jsp:useBean>时,会出现以下错误:
Servlet.service() for servlet [jsp] in context with path [/JSPTest] threw exception [Unable to compile class for JSP: 

An error occurred at line: 10 in the jsp file: /index.jsp
Users cannot be resolved to a type
7:     <title>Insert title here</title>
8:   </head>
9:   <body>
10:     <jsp:useBean id="mybean" class="Users" scope="session" >
11:       <jsp:setProperty name="mybean" property="name" value="Hello world" />
12:     </jsp:useBean>
13:   </body>

我正在使用 Eclipse、Tomcat 7.0.23 和 Java 1.7.0_01。
有什么想法吗?
PS:我不得不将端口 8xxx 更改为 9xxx,因为 Oracle 数据库正在使用标准的 8xxx。但这可能不是问题的原因。
1个回答

11

为了能够在其他类中使用类,您需要将其放入一个包中。位于默认包中的类对于自身处于包中的类是不可见的(就像JSP一样)。

因此,请为Users类添加一个package,如下所示:

package com.example;

public class Users {
    // ...
}
重新编译并将其放置在 /WEB-INF/classes/com/example/Users.class 中。
然后你可以按照以下方式引用它:
<jsp:useBean id="myBean" class="com.example.Users" />

与具体问题无关,将实体的类名设置为复数通常是一个不好的设计。这个类是否真的代表多个用户?为什么不使用例如List<User>呢?或者它实际上代表单个用户?那么它应该被命名为User


嗨。那个方法可以行得通,但现在我找到了一种更简单的方法。我只需要导入我需要的类,一切都没问题了。就像这样:<%@ page import = "com.MyClass" %>,不要担心复数和List<User>之类的东西^^这应该只是一个测试,没有别的。我只是想学习如何使用jsp。 - OverStack
只有在使用旧的scriptlets访问数据时,这才有效,这意味着您正在从正确的MVC方法中向后迈进(不是因为<jsp:useBean>是其一部分,因为它基本上只绑定了M和V而没有C)。 Scriptlets已经被弃用了将近十年。另请参阅https://dev59.com/13A75IYBdhLWcg3wqK10和http://stackoverflow.com/tags/jsp/info。 - BalusC
哦,好的,知道了。但这真的很紧张。我以为JSP很好,因为你可以使用自己的Java代码/类,如果你想使用它们,你也可以使用Java代码(脚本)。现在我还要学习JSTL和其他东西。这不是JSP的好处^^ - 但是,我会尝试一下。但看起来真的很复杂 :/ - OverStack
1
你也可以像PHP一样编写JSP,但这只会导致可维护性的灾难 :) - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接