dポイントプレゼントキャンペーン実施中!

javax.el.PropertyNotFoundException: Property 'fact' not found on type web.entity.DBData
というエラーが消えません。

どなたか助けて頂けないでしょうか。
エンティティーで宣言しているのに、jspが読み込んでくれません。

[show.jsp] 表示箇所

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@page import="web.entity.DBData"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Searching</title>
</head>
<body>
<h1>Company Information</h1>
<table border="1">
<c:forEach items="${list3}" var="factory">
<tr>
<td><c:out value="${factory.fact}" /></td>
<td><c:out value="${factory.gcon}" /></td>
</tr>
</c:forEach>
</table>
</body>
</html>

[search] データ取得

public class Search extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Connection connection = null;

try {
InitialContext initCtx = new InitialContext();

DataSource ds = (DataSource) initCtx
.lookup("java:comp/env/jdbc/localDB");

connection = ds.getConnection();

List<DBData> resultList3 = SelectFactory(connection);

request.setAttribute("list3", resultList3);

request.getRequestDispatcher("/show.jsp")
.forward(request, response);

} catch (Exception e) {
throw new ServletException(e);
} finally {
try {
connection.close();
} catch (SQLException e) {
throw new ServletException(e);
}
}
}
public List<DBData> SelectFactory(Connection connection) throws Exception {

String sql_Factory = "SELECT Factory_Name , General_Contractor "
+ "FROM FACTORY WHERE Company_Name like CONCAT('%',?,'%')";

PreparedStatement statement3 = connection.prepareStatement(sql_Factory);
statement3.setString(1, "Company1");
ResultSet rs3 = statement3.executeQuery();
List<DBData> resultList3 = new ArrayList<DBData>();

while (rs3.next()) {
DBData factory = new DBData();
factory.setFactory(rs3.getString("Factory_Name"));
factory.setGcontractor(rs3.getString("General_Contractor"));

resultList3.add(factory);
}
return resultList3;
}
:

[DBData.java] エンティティー箇所

public class DBData {
String company;
String fact;
String gcon;

public String getFactory() {
return fact;
}
public void setFactory(String fac) {
this.fact = fac;
}
public String getGcontractor() {
return gcon;
}
public void setGcontractor(String gc) {
this.gcon = gc;
}
}

A 回答 (2件)

<c:forEach items="${list3}" var="factory">


<tr>
<td><c:out value="${factory.fact}" /></td>
<td><c:out value="${factory.gcon}" /></td>
</tr>
</c:forEach>

この処理は、以下の処理へ内部的に書き換えています。

for(DBData factory:list3){
 factory.getFact();//←getFactメソッドが無いので失敗
 factory.getGcon();//←getGconメソッドがないので失敗
}

直接factやgconを取得しているわけではありません。
    • good
    • 0
この回答へのお礼

考え方が間違っていたのですね。
参考になりました、ありがとうございました!!

お礼日時:2013/08/02 17:23

こう?


<td><c:out value="${factory.factory}" /></td>
<td><c:out value="${factory.gcontractor}" /></td>
    • good
    • 0
この回答へのお礼

ありがとうございます。
上手く動ききました!

エンティティで「fact」を宣言しているのに、
なぜここで下記の様に記載するのでしょうか?

<td><c:out value="${factory.factory}" /></td>
<td><c:out value="${factory.gcontractor}" /></td>

お礼日時:2013/08/02 10:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!