2017-06-25 126 views
0

當我嘗試使用類RankingResult的簡單ArrayList中的信息填充xml文件時,出現上述錯誤。在四處搜索後,我發現大多數有這個錯誤的人在xml中發現了拼寫錯誤,但在這裏似乎並不是這樣(如果是這樣的話,我會感到非常愚蠢)。javax.el.PropertyNotFoundException:在類型model.RankingResult上找不到屬性'genero'

我已經有事情,可以正常使用一個非常類似的事情(控制器重定向到一個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);  
} 

調試確認「結果」ArrayList已正確填充。

的RankingResult類:

public class RankingResult { 
    public final String genero; 
    public final int quantidade; 

    public RankingResult(String genero, int quantidade){ 
     this.genero = genero; 
     this.quantidade = quantidade; 
    } 
} 

項目樹:

Project tree(1) Project tree(2)

回答

2

的信息是絕對正確的。在你的班級中沒有屬性名稱。您有一個名爲genero的公衆字段。但JSP EL在Java Bean 屬性上工作。你需要一個

public String getGenero() { 
    return this.genero; 
} 

方法在你的RankingResult類。

使用公共字段通常是不好的做法,不能用於JSP EL,它是圍繞Java Beans約定設計的。

+0

你也是絕對正確的,我不知道。我在某個時候嘗試過使用getter,但我想我沒有注意到結果,並認爲問題依然存在。我爲公共領域責怪[這傢伙](https://stackoverflow.com/a/6271781/2870015):o)。非常感謝您的寶貴時間。 – Panque

相關問題