2016-04-05 75 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; 
     } 
    } 
}