ResourceBundle introuvable pour MessageSource lorsqu'il est placé dans un dossier
Je suis en train d'utiliser les ressources avec le Printemps de la Source du Message. Voici la façon dont je le fais:
@Component
public class MessageResolver implements MessageSourceAware {
@Autowired
private MessageSource messageSource;
public void setMessageSource(MessageSource messageSource) {
this.messageSource = messageSource;
}
public String getMessage(){
return messageSource.getMessage("user.welcome", new Object[]{"Rama"} , Locale.US);
}
}
Et voici ma structure de dossier:
messages_en_US.propriétés contient qu'une seule ligne:
user.welcome=Welcome {0}
Voici la configuration xml utilisé:
<bean name="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>resourcebundles/messages</value>
</property>
</bean>
Voici l'erreur que j'obtiens:
WARNING: ResourceBundle [resourcebundles/messages] not found for MessageSource: Can't find bundle for base name resourcebundles/messages, locale en_US
Exception in thread "main" org.springframework.context.NoSuchMessageException: No message found under code 'user.welcome' for locale 'en_US'.
Mais si je déplace mon regroupement de ressources directement sous le dossier de ressources, il fonctionne très bien. Dans ce cas, voici la configuration xml, j'utilise:
<bean name="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>messages</value>
</property>
Est que si je dois utiliser ResourceBundleMessageSource, je devrais mettre mes ressources directement dans les ressources? Si je dois le garder dans le dossier spécifié seulement, est-il un autre moyen d'obtenir ce qu'une œuvre?
Merci!
source d'informationauteur Prasanth
Vous devez vous connecter pour publier un commentaire.
Modifier votre configuration suivantes pour messageSource bean dans le fichier xml.
Depuis tous vos fichiers de propriétés sont dans le classpath de java, vous devez définir le chemin d'accès avec le préfixe
classpath*:
sinon il va chercher dans le répertoire web de votre application.Espère que cela vous aide. Des acclamations.
garçon, peut-être vous pouvez modifier la configuration xml comme suit:
utilisation
au lieu de
de configuration comme ceci:
Dans mon cas, à l'aide de Printemps 4.3.2.COMMUNIQUÉ de et java config et un ReloadableResourceBundleMessageSourceje devais définir mon moteur de template comme un haricot sinon mes messages n'étaient pas en train de se rétablir.
Voici un exemple d'une configuration de travail.
AppConfig.java
Vous devez configurer vos messages de chemin d'accès, comme indiqué ci-dessus.
Aussi, vérifier le nom de la classe.
J'ai utilisé la configuration suivante et il fonctionne très bien
Ce qui a fonctionné pour moi était quelque chose de vraiment simple.
Il a été
Je l'ai changé pour
Juste un \ à /modifier fixe pour moi. J'utilise un MAC.
Je n'ai pas essayé
*classpath
qui n'ont pas travaillé pour moi.J'ai utilisé la configuration suivante et il fonctionne très bien dans mon projet.
Mes messages.propriétés est dans le chemin d'accès ci-dessous:
..\WebContent\WEB-INF\ressources