2012-01-08 7 views
6

Я использую проект Spring MVC из Netbeans, и я переместил файл applicationContext.xml в/src/conf, потому что я прочитал WEB-INF, это не правильная папка. Я не могу получить доступ к контексту приложения из контроллера в/src/java/web/controller. Я пробовал несколько способов, и он не развертывает проект.Как получить доступ к applicationContext с контроллера

Мне нужна ссылка, чтобы узнать больше о путях в веб-проекте, пожалуйста.

Я думаю, что это может помочь нам понять:

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

и что путь? потому что контроллер не находит applicationContext в /WEB-INF/applicationContext.xml. Спасибо – honnix

+0

Я пытаюсь создать TasksController, чтобы показать задачи в JSP. У меня есть bean taskManager, определенный в applicationContext.xml, и я хочу, чтобы контроллер получал taskManager и выполнял задачи с помощью getTasks(). – honnix

ответ

13

Ouch. ОК, вы не создаете новые контексты из своего контроллера. Контекст уже настроен Spring, вам просто нужно попросить Spring для него.

Сделайте ваш контроллер реализации BeanFactoryAware и Spring будет впрыскивать контекст для вас автоматически вызывая setBeanFactory:

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

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

    // handleRequest as before 
} 
+0

Должен ли я вставлять bean taskManager в TaskController в dispatcher-servlet.xml? – honnix

+0

@honnix: Еще лучше, да. – skaffman

Смежные вопросы