【问题标题】:Cannot make a static reference to the non-static method list() from the type EmployeeDAO无法从 EmployeeDAO 类型对非静态方法 list() 进行静态引用
【发布时间】:2017-06-19 05:26:24
【问题描述】:

我正在 Eclipse 中开发一个应用程序,以使用 Spring 和 hibernate 在网页中显示数据库表。以下是我的 DAO 文件。

package net.codejava.spring.dao;
import java.util.List;
import net.codejava.spring.model.Employee;
public interface EmployeeDAO {
public List<Employee> list();
}

我创建的控制器是

package net.codejava.spring.controller;

import java.io.IOException;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import antlr.collections.List;
import net.codejava.spring.dao.EmployeeDAO;
import net.codejava.spring.dao.*;
public class HomeController {
private EmployeeDAO employeeDAO;

@RequestMapping(value="/")
public ModelAndView listEmployee(ModelAndView model) throws IOException{
    List<Employee> listEmployee = EmployeeDAO.list();
    model.addObject("listEmployee",listEmployee);
    model.setViewName("ome");
    return model;
}

}

现在它在我的控制器中显示一条错误消息,例如“无法从 EmployeeDAO 类型对非静态方法 list() 进行静态引用”。

如何解决?

提前致谢

【问题讨论】:

    标签: hibernate spring-mvc


    【解决方案1】:

    您可以在自动装配参考中使用 2 种方式使用 Dao 类在控制器中创建对象。

    @Autowired
    private EmployeeDAO employeeDAO;
    

    否则在 dao 类中使用静态方法。

    【讨论】:

      【解决方案2】:

      你应该在你的控制器中通过@Autowired注解注入EmployeeDAO

      最好定义服务层并在控制器中使用它。我认为您应该了解有关图层的更多信息。见this

      @Autowired
      private EmployeeDAO employeeDAO;
      
       @RequestMapping(value="/")
       public ModelAndView listEmployee(ModelAndView model) throws IOException{
         List<Employee> listEmployee = employeeDAO.list();
          model.addObject("listEmployee",listEmployee);
          model.setViewName("ome");
         return model;
      }
      

      【讨论】:

        猜你喜欢
        • 2013-01-15
        • 2015-08-18
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多