javax.el.PropertyNotFoundException: 属性 'genero' 在类型 model.RankingResult 上找不到
javax.el.PropertyNotFoundException: Property 'genero' not found on type model.RankingResult
我在尝试使用来自 class RankingResult 的简单 ArrayList 的信息填充 xml 文件时遇到上述错误。搜索了一圈之后,我发现大多数有这个错误的人都在 xml 中输入了错误,但这里似乎不是这种情况(如果是这样我会觉得很愚蠢)。
我已经有一个非常相似的事情在进行并且完美地工作(控制器重定向到 xml 发送对象的 ArrayList 然后由打印,所以我完全迷失在这里。
这是一些代码:
"ranking.jsp"xml
<?xml version="1.0" encoding="UTF-8"?>
<%@page contentType="application/xml" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<data>
<c:forEach items="${results}" var="result">
<tr>
<td>${result.genero}</td>
<td><c:out value="${result.quantidade}"/></td>
</tr>
</c:forEach>
</data>
控制器doPost()
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String ator = request.getParameter("ator");
String diretor = request.getParameter("diretor");
ArrayList<RankingResult> results = null;
try{
BuscaDAO b2DAO = new BuscaDAO();
results = b2DAO.busca2(ator, diretor);
} catch(DAOException | SQLException ex) {
Logger.getLogger(Busca1.class.getName()).log(Level.SEVERE, null, ex);
}
request.setAttribute("results", results);
request.getRequestDispatcher("/WEB-INF/xml/ranking.jsp").forward(request, response);
}
调试确认 "results" ArrayList 已正确填充。
排名结果class:
public class RankingResult {
public final String genero;
public final int quantidade;
public RankingResult(String genero, int quantidade){
this.genero = genero;
this.quantidade = quantidade;
}
}
项目树:
消息完全正确。您的 class 中没有 属性 名字 genero。您有一个名为 genero 的 public field。但是 JSP EL 在 Java Bean properties 上工作。你需要
public String getGenero() {
return this.genero;
}
您的 RankingResult
class.
中的方法
使用 public 字段通常是不好的做法,并且不适用于 JSP EL,它是围绕 Java Beans 约定设计的。
我在尝试使用来自 class RankingResult 的简单 ArrayList 的信息填充 xml 文件时遇到上述错误。搜索了一圈之后,我发现大多数有这个错误的人都在 xml 中输入了错误,但这里似乎不是这种情况(如果是这样我会觉得很愚蠢)。
我已经有一个非常相似的事情在进行并且完美地工作(控制器重定向到 xml 发送对象的 ArrayList 然后由打印,所以我完全迷失在这里。
这是一些代码:
"ranking.jsp"xml
<?xml version="1.0" encoding="UTF-8"?>
<%@page contentType="application/xml" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<data>
<c:forEach items="${results}" var="result">
<tr>
<td>${result.genero}</td>
<td><c:out value="${result.quantidade}"/></td>
</tr>
</c:forEach>
</data>
控制器doPost()
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String ator = request.getParameter("ator");
String diretor = request.getParameter("diretor");
ArrayList<RankingResult> results = null;
try{
BuscaDAO b2DAO = new BuscaDAO();
results = b2DAO.busca2(ator, diretor);
} catch(DAOException | SQLException ex) {
Logger.getLogger(Busca1.class.getName()).log(Level.SEVERE, null, ex);
}
request.setAttribute("results", results);
request.getRequestDispatcher("/WEB-INF/xml/ranking.jsp").forward(request, response);
}
调试确认 "results" ArrayList 已正确填充。
排名结果class:
public class RankingResult {
public final String genero;
public final int quantidade;
public RankingResult(String genero, int quantidade){
this.genero = genero;
this.quantidade = quantidade;
}
}
项目树:
消息完全正确。您的 class 中没有 属性 名字 genero。您有一个名为 genero 的 public field。但是 JSP EL 在 Java Bean properties 上工作。你需要
public String getGenero() {
return this.genero;
}
您的 RankingResult
class.
使用 public 字段通常是不好的做法,并且不适用于 JSP EL,它是围绕 Java Beans 约定设计的。