2016-04-05 69 views
-1

我控制器具有自动装配Autowired场“resultados”Spring MVC。豆NULL值

@Controller 
public class MyController { 

    @Autowired 
    private CursoDelegate cursoDelegado; 

    @Autowired 
    private List<Articulo> resultados; 

    @RequestMapping(value = "consultarArticulos.html") 
    public ModelAndView consultarArticulos() { 

     ModelAndView modelAndView= new ModelAndView("consultarArticulos");    
     modelAndView.addObject("resultados", resultados);  
     return modelAndView;   
    } 

而且我定义配置类的豆。 “cursoDelegado.consultarArticulos()”方法返回三个元素的集合,但bean始终为空。还有其他类但这里不需要

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.myapp") 
public class MyConfig extends WebMvcConfigurerAdapter { 

    @Bean 
    public List<Articulo> resultados() 
    { 
     try { 
      return cursoDelegado.consultarArticulos(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return null; 
     } 
    } 
} 

对不起,我没有粘贴所有代码,但应用程序运行并声明了所有的bean。该problema是 “resultados”

我更改代码:

​​

,现在其确定。接口列表有任何问题,但我不知道原因。如果任何人都可以解释我的problema :)

+0

它可能会混淆实际问题存在的方法'MyController.consultarArticulos'和'CursoDelegate.consultarArticulos'。发布'CursoDelegate' – Reimeus

回答

0
@Bean 
public List<Articulo> resultados(CursoDelegate cursoDelegado) 
{ 
    try { 
     List<Articulo> resultados = new ArrayList<Articulo>(); 
     resultados = cursoDelegado.consultarArticulos(); 
     return resultados; 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return null; 
    } 
} 
0

cursoDelegado没有定义 /在的myconfig注入所以cursoDelegado.consultarArticulos()总是会抛出NullPointerException。你抓住这个,这样它就不会在你的应用程序中看到。控制台输出(e.printStackTrace)应该在服务器日志中可见。

最好使用cursoDelegado.consultarArticulos()直接在cursoDelegado注入控制器。

+0

我不会复制所有代码,对不起。应用程序运行但resultados始终为空 – Gwaihir

0
@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.myapp") 
public class MyConfig extends WebMvcConfigurerAdapter { 
    @Bean 
    public CursoDelegate cursoDelegado() { 
     return new CursoDelegateImpl(); 
    } 

    @Bean 
    public List<Articulo> resultados() 
    { 
     try { 
      return cursoDelegado().consultarArticulos(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return null; 
     } 
    } 
}