2017-06-25 8 views
0

クラスRankingResultの単純なArrayListの情報をXMLファイルに取り込みしようとしているときに、上記のエラーが発生します。周りを検索した後、私はこのエラーのほとんどの人がXMLで誤字を犯したことを知ったが、それはここにあるようではない(私はそれが本当のばかげていると感じるだろう)。javax.el.PropertyNotFoundException:プロパティ 'genero'が型model.RankingResultに見つかりません

私はすでに、コントローラは、それまでに印刷されたオブジェクトのArrayListのを送信するXMLにリダイレクトするので、私は完全にここに迷ってしまいました(実際には同じようなことが起こっていると完璧に働いてい

をここにいくつかのコードです:。

"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が正しく読み込まれていることが確認されます。

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

メッセージが絶対的に正しいです。クラスにはプロパティ名はありません。 generousという名前のフィールドが公開されています。しかし、JSP ELはJava Bean のプロパティで動作します。あなたのRankingResultクラスには

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

メソッドが必要です。

一般的にパブリックフィールドを使用するのは悪い習慣であり、Java Beansの慣習に基づいて設計されたJSP ELでは動作しません。

+0

あなたはまた絶対に正しいです、私は分かりませんでした。ある時点でゲッタを使ってみましたが、結果に注意を払わずに問題が解決したと思いました。私はパブリックフィールドのために[この男](https://stackoverflow.com/a/6271781/2870015)を責めます:o)。あなたのお時間をありがとうございました。 – Panque

関連する問題