2011-11-30 41 views
2

我只是玩弄JSP。我只是想測試一些<jsp:useBean>的東西,但我不能。每當我使用<jsp:useBean>時,都會出現錯誤。即使我只是有這個,我得到一個錯誤:不能使用<jsp:useBean>:「豆不能解析爲一個類型」

<%@ 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 DB使用的是標準8xxx。但這可能不是問題的原因。

回答

9

您需要將類放入包中以便能夠在其他類中使用它們。默認包中的類對於自身在包中的類是不可見的(就像JSP會結束一樣)。

所以,給Userspackage像這樣:

package com.example; 

public class Users { 
    // ... 
} 

重新編譯,並把它放在/WEB-INF/classes/com/example/Users.class

然後你就可以引用它,如下:

<jsp:useBean id="myBean" class="com.example.Users" /> 

無關的具體問題,一個帶有多個作爲一個實體的類名通常是一個氣味。該類的單個實例是否確實代表多個用戶?爲什麼你沒有List<User>例如?或者它確實代表一個用戶?它應該被命名爲User

+0

嗨。這可以工作,但現在我找到了一個更簡單的方法。我只需要導入我需要的課程,一切都可以。就像這樣:<%@ page import =「com.MyClass」%>,讓我們不要關於plurar和列表的東西^^這應該只是一個測試沒有別的。只是想學習如何jsp。 – OverStack

+0

這隻有在您使用舊學校* scriptlets *訪問數據時纔有效,這意味着您正在從適當的MVC方法向後邁進(並不是說''是它的一部分,因爲它基本上只會將M與V結合沒有C)。 * Scriptlets *然而被阻止了將近十年。另請參閱http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files和http://stackoverflow.com/tags/jsp/info – BalusC

+0

哦,很高興知道。但那真的很有壓力。我認爲jsp很好,因爲你可以使用你的javacode/classes,如果你想使用它們,你也可以使用javacode(scriptlets)。現在我必須學習jstl和其他的東西。這不是很好的jsp ^^ - 但是我會嘗試它。但它看起來非常複雜:/ – OverStack

相關問題