ResourceBundleMessageSource
からReloadableResourceBundleMessageSource
に変更されています。NoSuchMessageException - Spring ReloadableResourceBundleMessageSource
私はapp-dispatcher-servlet.xmlをReloadableResourceBundleMessageSourceの要件を反映するように変更しました。 <value>com.app.properties.windows</value>
から<value>classpath:windows</value>
までですが、私はNoSuchMEssageException
になります。私はそれが私のプロパティファイルを置く場所と関係があると思っています。あるいは、私はそれを正しくリンクしていません。
ドク:
これは、ファイルの拡張子や言語コードを指定していないの基本的なのResourceBundleルール に従うが、 に(代わりに リソースをクラスパスに制限されるの)いずれかの春のリソースの場所を参照することができます。 "classpath:"接頭辞を使用すると、リソースは引き続きクラスパスから にロードできますが、 "-1"以外の "cacheSeconds"値(キャッシュ は永久にキャッシュされます)がこの場合確実に機能しない可能性があります。以下は
NotBlank.book.name = Enter something don't be lazy
アプリ-ディスパッチャ-servlet.xml
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:messages</value>
<value>classpath:windows</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8" />
</bean>
// some i18n and localization bean
スタックトレース
....私が持っているものですorg.springframework.web.util.NestedServletException:要求 処理に失敗しました。ネストされた例外は org.springframework.context.NoSuchMessageExceptionです:メッセージが見つかりません ロケール 'zh_CN'のコード 'Size.book.ispn'の下にあります。 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) javax.servlet.http.HttpServlet.service(HttpServletをorg.apache.tomcat.websocket。)。 server.WsFilter.doFilter(WsFilter.java:52) 根本原因
org.springframework.context.NoSuchMessageException:いいえメッセージはロケールのコード 'Size.book.ispn' 'zh_CNに' 下 は認められませんでした。 org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:159) com.app.controller.spaController.pageSpa(spaController.java:54) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) 日.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:483) org.springframework。 web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) org.springframework.web.servlet.mvc.method。アノタ.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) org。springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) 組織。 (org.springframework.web.servlet.DervatServlet)。 doService(DispatcherServlet.java:895) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) のjavax.servlet .http.HttpServ (HttpServlet.java:729) .tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
は
public class someController(){
@autowired
private MEssageSource messageSource;
public String pageSpa(Model model){
System.out.println("loading index page");
//System.out.println(((CustomMessageSource) messageSource).listMessageProperties("book", locale));
Locale locale = LocaleContextHolder.getLocale();
System.out.println(messageSource.getMessage("NotBlank.book.name", null, locale));
return "spa";
}
ありがとうございました私の作品は何
スタックトレースとメッセージを読み取るコードを共有することができます –
スタックトレースを追加しました –
メッセージリソースファイルをWEB-INF下のリソースフォルダに配置する必要があります。 – VPK