我有一个从 bean 类输出文本的 xhtml 文件。该程序使用 DAO 架构连接到 MySql 数据库。我下面的代码试图查询数据库以显示所有条目的列表。我在 MyFixBean 类中收到以下错误。
我的 xhtml 文件:
<h:outputText value="#{myFixBean.mydata}" /></h:column>
我的java文件(简化间距):
public class MyFixBean {
private DAOFactory fix = DAOFactory.getInstance("fix_site2.jdbc");
private MyDataDAO datalist = fix.getMyDataDAO();
private List<MyData> mydata = datalist.list();
public List<MyData> getMydata() {
return mydata;
}
}
public abstract class DAOFactory {
public MyDataDAO getMyDataDAO() {
return new MyDataDAOJDBC(this);
}
}
public interface MyDataDAO {
List<MyData> list() throws DAOException;
}
public class MyDataDAOJDBC implements MyDataDAO {
private DAOFactory daoFactory;
private static final String SQL_FIND_ALL = "SELECT * FROM account_list";
MyDataDAOJDBC(DAOFactory daoFactory) {
this.daoFactory = daoFactory;
}
public List<MyData> list() throws DAOException {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
List<MyData> data = new ArrayList<MyData>();
try {
connection = daoFactory.getConnection();
preparedStatement = connection.prepareStatement(SQL_FIND_ALL);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
data.add(map(resultSet));
}
} catch (SQLException e) {
throw new DAOException(e);
} finally {
close(connection, preparedStatement, resultSet);
}
return data;
}
}
我收到的错误是:
WARNING: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.Error: Unresolved compilation problem:
Unhandled exception type DAOException
at mybeans.MyFixBean.<init>(MyFixBean.java:21)
第 21 行:
private List<MyData> mydata = datalist.list();
归功于 BalusC。我的程序基于他的 DAO 教程中的代码。为了节省空间,我将该网站排除在代码之外。
最佳答案
这不是 JSF 也不是 Dao 设计模式实现问题。这是一个基本的 Java 问题: Unresolved 编译问题。确保包 mybeans
中有一个 DAOException
类(或者该异常所在的包)。
基本示例:
package mybeans;
public class DAOException extends RuntimeException {
//implement the exception as you want/need...
}
关于java - 使用 DAO 的 Bean 类编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20021142/