2009-03-20 6 views
4

J'ai une classe ResourceBundle personnalisée org.example.web.UILabels.java qui fonctionne bien dans le code de fonctionnement mais l'éditeur JSF dans Eclipse ne le trouve pas, je suppose l'éditeur/validateur est seulement à la recherche de fichiers de propriétés par le nom. Cela signifie aussi que je n'ai plus de type avant de trouver sur les ressources ce qui était très agréable à avoir.JSF Validation ne trouve pas la classe ResourceBundle personnalisée

Des idées comment cela pourrait-il être rectifié?

<f:loadBundle basename="org.example.web.UILabels" var="uiLabels"/> 
... 
<h:outputText value="#{uiLabels.someTextValue}" /> 
... 

Je reçois le message d'erreur (dans la liste des problèmes d'erreur)

bundle ressources org.example.web.UILabels ne peuvent pas être trouvées sur classpath

Type = JSF Problème

Eclipse3.4.0 avec WebStandardTools Versions

  • Vers ion: 1.4.0.v200802280619-13-7w311917141518
  • Version: 1.5.1.v200802280619-1407w311917141519
  • Version: 3.0.0.v200806092130-7A-8Y8QqN2lf4VSWrI2ek5Pf4k7s

Pour en savoir plus pourquoi je me sers une classe ResourceBundle au lieu de seulement un fichier de propriétés voir Question 653682 how-to-override-some-resources-from-a-propertyresourcebundle

Merci pour votre temps, David Waters

Répondre

3

l'élément faisceau ressource est plus efficace que le f: l'action loadBundle puisque le paquet peut être créé une fois fo r toute l'application. Cependant, c'est une fonctionnalité JSF 1.2 et si vous voulez être compatible avec JSF 1.1, vous devez utiliser JSF 1.1. Voici un exemple si vous utilisez JSF 1.2: Define dans votre visage-config.xml comme ceci:

<application> 
<resource-bundle> 
<base-name>org.example.web.UILabels</basename> 
<var>uiLabels</var> 
</resource-bundle> 
</application> 

Désolé pour ne pas répondre à votre question, mais je n'ai pas expérience de première main avec Eclipse. J'ai aussi mal compris votre question d'abord, donc j'ai édité ma réponse originale.

+0

N'a pas répondu à la question, mais a été utile de toute façon excusse moi pendant que je vais supprimer 40+

+0

hehe pas de problème =) Cela pourrait résoudre votre problème tho? Avez-vous essayé si Eclipse vous montre le bon type d'avance? –

+0

J'ai fait le changement suggéré car il rend le code plus propre, mais cela n'aide pas l'éclipse. Eclipse suppose que le ResourceBundle sera un fichier de propriétés et ne fait pas comme le dit la spécification pour chercher d'abord la classe puis le fichier de propriétés. –

2

J'ai eu le même problème, je trouve enfin cette sollution: recherche Eclipse uniquement les propriétés par défaut, votre projet doit avoir un propriétés sans locale, par exemple, avec:

<f:loadBundle basename="i18n.messages" var="msg" /> 

Eclipse seulement recherche "i18n/messages.properties".

Questions connexes