JSP-错误java.lang.String没有属性
我仍然得到这个错误: org.apache.jasper.jaspereException:javax.el.PropertyNotFoundException:类“java.lang.String”没有属性“motoId” 但我有创造二传手和接球手 这是我的简单jsp代码:JSP-错误java.lang.String没有属性,java,jsp,jstl,Java,Jsp,Jstl,我仍然得到这个错误: org.apache.jasper.jaspereException:javax.el.PropertyNotFoundException:类“java.lang.String”没有属性“motoId” 但我有创造二传手和接球手 这是我的简单jsp代码: <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/j
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:set var="list" value=" <%=eng.selectFromDb.appLayer.MotoBO.getAll() %> " />
<table>
<tr>
<th>ID</th>
<th>Značka</th>
<th>Model</th>
<th>Kategoria</th>
<th>Objem</th>
<th>Maximalna rychlost</th>
</tr>
<c:forEach var= "moto" items=" ${list} " >
<tr>
<td>${moto.motoId}</td>
<td>${moto.znacka}</td>
<td>${moto.Model}</td>
<td>${moto.Kategoria}</td>
<td>${moto.Objem}</td>
<td>${moto.Max_rychlost}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
}
dao.getAll()的后面是:
connection();
List ret=new ArrayList();
String textSql=“从motobykes中选择*”;
试一试{
PreparedStatement ps=connection.prepareCall(textSql);
结果集rs=ps.executeQuery();
while(rs.next()){
int motoId=rs.getInt(1);
字符串znacka=rs.getString(2);
字符串模型=rs.getString(3);
String kategoria=rs.getString(4);
int-objem=rs.getInt(5);
int max_rychlost=rs.getInt(6);
摩托比克斯摩托=新摩托比克斯(摩托ID、znacka、model、kategoria、objem、max_rychlost);
ret.add(moto);
}
rs.close();
ps.close();
}catch(SQLException-ex){
processException(“未能获取所有motos”,例如);
}
返回ret;
我知道jstl有问题,但我不知道在哪里。谢谢你的帮助 问题在于这一行:
<c:set var="list" value=" <%=eng.selectFromDb.appLayer.MotoBO.getAll() %> " />
您不能在JSTL属性中使用scriptlet表达式。您根本不应该使用scriptlet表达式。访问数据库应该用Java从控制器中完成。结果(模型)应该存储在请求属性中,以便视图访问和显示它。这是MVC的基本原理
将以下代码放入控制器(例如servlet):
List List=MotoBO.getAll();
setAttribute(“列表”,列表);
从JSP视图中删除
。并没有说这是问题所在,但我注意到没有setMotoId
当“motoId”是int
时,错误提到String
属性似乎很奇怪。MotoBO.getAll()
背后的代码是什么?我知道,但现在有问题了,我不想设置MotoId,它正在执行sql.MotoBO.getAll()有以下代码:public static List getAll(){List ret;MotoDAO dao=new MotoDAO();dao.open();ret=dao.getAll();dao.close();return ret;}
ensureOpenConnection();
List<MotorBykes> ret = new ArrayList<>();
String textSql = "SELECT * FROM motobykes";
try {
PreparedStatement ps = connection.prepareCall(textSql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
int motoId = rs.getInt(1);
String znacka = rs.getString(2);
String model = rs.getString(3);
String kategoria = rs.getString(4);
int objem = rs.getInt(5);
int max_rychlost = rs.getInt(6);
MotorBykes moto = new MotorBykes(motoId, znacka, model, kategoria, objem, max_rychlost);
ret.add(moto);
}
rs.close();
ps.close();
} catch (SQLException ex) {
processException("Failed to get all motos", ex);
}
return ret;
<c:set var="list" value=" <%=eng.selectFromDb.appLayer.MotoBO.getAll() %> " />
List<MotorBykes> list = MotoBO.getAll();
request.setAttribute("list", list);