我正在使用tomcat 6.0 我有以下jsp代码
<%@ page import="java.util.*" %>
<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
<html>
<head>
</head>
<body>
<table>
<tr>
<td>Name</td>
<td>Start Date</td>
</tr>
<%
List<data> da1 = conb.dat();
while(da1 != null) {
%>
<tr>
<td><%out.print(da1.get1());%></td>
<td><%out.print(da1.get2());%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
我收到此错误
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 68 in the jsp file: /trands.jsp
The method get1() is undefined for the type List<data>
65: <%
66: data da = new pkg.data();
67: List<data> da1 = conb.dat();
68: while(da1 != null) {
69: %>
70: <tr>
71: <td><%out.print(da1.get1());%></td>
An error occurred at line: 69 in the jsp file: /trands.jsp
The method get2() is undefined for the type List<data>
66: data da = new data();
67: List<data> da1 = conb.dat();
68: while(da1 != null) {
69: %>
70: <tr>
71: <td><%out.print(da1.get1());%></td>
72: <td><%out.print(da1.get2());%></td>
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java: 92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
java文件位于WEB-INF / classes / pkg文件夹中
为什么我得到这个错误。以及为什么它显示get1()未定义。我在data.java中有get1()函数。 connectdb()是jdbc java文件)。我编译了所有java类来获取.class文件。并将这个while循环显示我的数据库的所有细节
CODE for data.java
package pkg;
public class data
{
public String propn;
public String startd;
public data()
{
}
public void set1(String a)
{
propn=a;
}
public String get1()
{
return propn;
}
public void set2(String b)
{
startd=b;
}
public String get2()
{
return startd;
}
}
答案 0 :(得分:4)
The List
interface没有get1()
和get2()
方法。它只有a get()
method。也许你打算用它代替:
<td><%out.print(da1.get(1));%></td>
<td><%out.print(da1.get(2));%></td>
请注意,列表索引以0
开头,而不是1
。也许你也想改变它。
无关具体问题,我不知道你要做什么,但我只会提到这段代码是一场灾难,并暴露出更多其他问题(开始,做了什么)你认为用while (da1 != null)
来实现吗?你想在无限循环中展示它们吗?)。我强烈建议忘记这一点的JSP并将所有工作转移到普通的Java类,然后使用main()
方法将其作为普通的Java应用程序进行测试,该方法按System.out.println()
打印结果。这更容易开发,播放和测试。一旦你完成所有工作,你就可以导入并在servlet中调用该类,最终让JSP显示结果。
<强>更新强>:
以下是您通常希望循环显示列表的方法(我已根据最佳naming conventions为您修复了可怕的guesses,以便代码更自我记录):
List<Work> works = workService.list();
for (Work work : works) {
System.out.println(work.getPropertyNumber());
System.out.println(work.getStartDate());
}
以下是你将normally在JSP中循环它的方式
<c:forEach items="${works}" var="work">
<td>${work.propertyNumber}</td>
<td>${work.startDate}</td>
</c:forEach>
答案 1 :(得分:0)
da1变量的类型为List。它不包含方法get1()和get2()。你可能想要的是da1.get(1),da1.get(2)等。
<%out.print(da1.get(1));%>
<%out.print(da1.get(2));%>