2012-01-08 20 views
6

Używam Spring MVC Project z Netbeans i przeniosłem plik applicationContext.xml do/src/conf, ponieważ przeczytałem, że WEB-INF nie jest właściwym folderem. Nie mogę uzyskać dostępu do kontekstu aplikacji ze sterownika w/src/java/web/controller. Próbowałem na kilka sposobów i nie wdrażam projektu.Jak uzyskać dostęp do aplikacjiContext z kontrolera

Chciałbym link, aby dowiedzieć się więcej o ścieżkach w projekcie sieciowym, zarzutów.

myślę, że to może pomóc nam dowiedzieć się:

public class TasksController implements Controller { 
private TaskManager taskManager; 
protected final Log logger = LogFactory.getLog(getClass()); 

public TaskController() { 
    ApplicationContext context = new FileSystemXmlApplicationContext("/WEB-INF/applicationContext.xml");  
    taskManager = (TaskManager)context.getBean("taskManager"); 
} 

@Override 
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException { 

    logger.info("Returning view from TaskController"); 

    Map<String,Object> tasks = new HashMap<String,Object>(); 

// Get tasks from model 

    return new ModelAndView("tasks","tasks",tasks); 
} 

Bye!

+0

i jaka jest droga? ponieważ kontroler nie znajduje aplikacjiContext w /WEB-INF/applicationContext.xml. Dzięki – honnix

+0

Próbuję utworzyć TasksController, aby wyświetlić zadania na JSP. Mam zdefiniowany taskManager komponentu bean w applicationContext.xml i chcę, aby kontroler odebrał menedżera zadań i uzyskał zadania za pomocą funkcji getTasks(). – honnix

Odpowiedz

13

Ouch. OK, nie tworzysz nowych kontekstów z poziomu kontrolera. Kontekst został już skonfigurowany przez Spring, po prostu musisz poprosić Spring o to.

Bądź kontroler wdrożyć BeanFactoryAware, a następnie wstrzyknąć Wiosna będzie kontekst dla Ciebie automatycznie dzwoni setBeanFactory:

public class TasksController implements Controller, BeanFactoryAware { 
    private TaskManager taskManager; 

    public void setBeanFactory(BeanFactory context) { 
    taskManager = (TaskManager)context.getBean("taskManager"); 
    } 

    // handleRequest as before 
} 
+0

Czy należy wstrzyknąć menedżer zadań taskMaker do obiektu TaskController w pliku dispatcher-servlet.xml? – honnix

+0

@honnix: Jeszcze lepiej, tak. – skaffman

Powiązane problemy