2016-04-05 24 views
-1

mein Controller verfügt über ein Autowired Feld "resultados"Feder MVC. Bean Nullwerte

@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;   
    } 

Und ich definieren die Bohne in der Konfiguration der Klasse. Die Methode „cursoDelegado.consultarArticulos()“ Rück eine Sammlung von drei Elementen, aber die Bohne ist immer leer. Es gibt andere Klasse, aber nicht erforderlich hier

Sorry, ich habe nicht den gesamten Code einfügen, sondern die Anwendung ausführen und alle Bohnen deklariert haben. Die problema ist "resultados"

ich den Code ändern:

@Autowired //MyControllerClass 
private @Resource(name="bean1")List<Articulo> resultados; 

@Bean(name="bean1")//MyConfigClass 
public List<Articulo> resultados() 

und seine jetzt ok. Es gibt irgendein Problem mit Schnittstellenliste, aber ich kenne den Grund nicht. Wenn jemand mir die problema erklären könnte :)

+0

Es ist möglich, dass Sie die Methoden 'MyController.consultarArticulos' und' CursoDelegate.consultarArticulos' verwirren, wo das eigentliche Problem besteht. Post 'CursoDelegate' – Reimeus

Antwort

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 ist nicht definiert/injiziert in MyConfig so cursoDelegado.consultarArticulos() immer eine Nullpointer werfen. Sie fangen das ein, damit es in Ihrer Anwendung nicht sichtbar ist. Die Konsolenausgabe (e.printStackTrace) sollte im Serverprotokoll sichtbar sein.

Beste cursoDelegado.consultarArticulos() direkt in der Steuerung zu verwenden, wo cursoDelegado injiziert wird.

+0

ich alle Code kopieren nicht, sorry. Die Anwendung läuft aber resultados ist immer null – 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; 
     } 
    } 
}