2013-01-31 15 views
5

के बाहर संदेश स्रोत से संदेश प्राप्त नहीं हो सकता है जब मैं @ नियंत्रक वर्ग में संदेश प्राप्त करने का प्रयास करता हूं, लेकिन जब मैं को @Service या @ कॉम्पोनेंट क्लास में प्राप्त करने के लिए प्रयास करता हूं तो मुझे निम्न त्रुटि मिलती है:नियंत्रक

org.springframework.context.NoSuchMessageException: 
No message found under code 'email.ativacao.title' for locale 'pt_BR'. 

मेरे नियंत्रक:

@Controller 
public class TestController { 

    @Autowired 
    TestService service; 

    @Autowired 
    TestComponent component; 

    @Autowired 
    private MessageSource message; 

    @RequestMapping(value = "/send", method = RequestMethod.GET) 
    public String go() { 

      String message = message.getMessage 
        ("email.ativacao.title", null, new Locale("pt", "BR")); 

      service.getMessage(); 

      component.getMessage(); 

      return "signsucess"; 
    } 

} 

मेरे सेवा:

@Service 
public class TestService { 

    @Autowired 
    private MessageSource message; 

    public void getMessage() { 
     //Error 
     String message = message. 
      getMessage("email.ativacao.title", null, new Locale("pt", "BR")); 
    } 

} 

मेरे घटक:

@Component 
public class TestComponent { 

    @Autowired 
    private MessageSource message; 

    public void getMessage() { 
     //Error 
     String message = message. 
      getMessage("email.ativacao.title", null, new Locale("pt", "BR")); 
    } 

} 

मेरे config:

<!-- i18n --> 
<mvc:interceptors> 
    <bean class="org.springframework.web.servlet.i18n. 
       LocaleChangeInterceptor" p:paramName="lang"/> 
</mvc:interceptors> 

<!-- Mesage Source Config -->  
<bean id="messageSource" 
    class="org.springframework.context.support. 
     ReloadableResourceBundleMessageSource" p:fallbackToSystemLocale="true" > 
    <property name="basename" value="WEB-INF/i18n/messages" /> 
</bean> 

<!-- Mapeia o cookie que irá salvar as opções de idioma --> 
<bean class="org.springframework.web.servlet.i18n.CookieLocaleResolver" 
    id="localeResolver" p:cookieName="locale"/> 

MessageSource दोनों @Service और @Component पर रिक्त नहीं है, लेकिन वे नहीं कर पा रहे संदेश (ऊपर अपवाद) मिलता है। मेरे गुण:

WebContent/वेब-INF/i18n

  • messages_pt_BR
  • messages_en_US

मैं वास्तव में समस्या नहीं मिल रहा। इसे हल करने के लिए कोई सुझाव? धन्यवाद।

+3

आपके नियंत्रक बीन और सेवा/घटक बीन एक ही संदर्भ में घोषित हैं? – Kent

+0

@ केंट नंबर, वे नहीं हैं। मेरी विन्यास 4 एक्सएमएल में विभाजित है। नियंत्रक के लिए घटक स्कैन एक एक्सएमएल में हैं और सेवाओं और घटकों के लिए घटक स्कैन अन्य एक्सएमएल में हैं। मैंने उन्हें एक साथ रखा, तो अब वे ठीक काम कर रहे हैं। कृपया एक उत्तर लिखें? मुझे इसे स्वीकार करने में खुशी होगी। – raonirenosto

+0

समान संदर्भ का मतलब xml फ़ाइल नहीं है। – Kent

उत्तर

10

जो आप वर्णन कर रहे थे, उससे मुझे लगता है कि नियंत्रक बीन और संदेश स्रोत को उसी संदर्भ में घोषित किया गया था। तो फिर एक दूसरे को मिल सकता है।

यदि आपकी सेवा बीन और नियंत्रक बीन को उसी संदर्भ में घोषित नहीं किया गया है, तो आपकी सेवा संदेश स्रोत नहीं मिल सकती है।

समान संदर्भ का मतलब एक ही फ़ाइल नहीं है। आपके one.xml में दो .xml शामिल हो सकता है।

वैसे भी, अगर यह आपके लिए काम करता है, तो यह अच्छा है।