2012-01-08 17 views
6

Netbeans'ten bir Spring MVC Project kullanıyorum ve WEB-INF okunduğum için applicationContext.xml dosyasını/src/conf dosyasına taşıdım. Uygulama içeriğine/src/java/web/controller içindeki bir denetleyiciden erişemiyorum. Birkaç yolu denedim ve projeyi dağıtmıyor.Bir Denetleyiciden applicationContext'e erişim

Web projesindeki yollar hakkında daha fazla bilgi edinmek için bir bağlantı istiyorum, memnuniyet.

ben bu anlamaya yardımcı olabileceğini düşündüğünüz:

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

ve yol nedir? Çünkü denetleyici applicationWeb'de /WEB-INF/applicationContext.xml dosyasında bulamıyor. Teşekkürler – honnix

+0

Bir JSP'deki görevleri göstermek için bir TasksController oluşturmaya çalışıyorum. Ben applicationContext.xml içinde tanımlanan bir bean taskManager'ım var ve controller'ın taskManager'ı almasını ve getTasks() ile görevleri almasını istiyorum. – honnix

cevap

13

Ouch. Tamam, kontrolörünüzün içinden yeni bağlamları oluşturmazsınız. Bağlam, Spring tarafından zaten yapılandırılmıştı, sadece Spring'i bunun için sormalısınız.

Denetleyiciniz BeanFactoryAware uygulamak olun ve Bahar otomatik setBeanFactory arayarak sizin için bağlam enjekte edecektir:

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

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

    // handleRequest as before 
} 
+0

Fasor görev Yöneticisi'ni dispatcher-servlet.xml dosyasında TaskController'a enjekte etmeli miyim? – honnix

+0

@honnix: Daha da iyisi, evet. – skaffman

İlgili konular