Внедрение ResourceBundle через @ManagedProperty, похоже, не работает внутри @Named

Как я могу получить доступ к пакету сообщений из кода Java, чтобы получить сообщение в соответствии с текущей локалью?

Я пытался с помощью@ManagedProperty как ниже:

@Named 
@SessionScoped 
public class UserBean implements Serializable {

    @ManagedProperty("#{msg}")
    private ResourceBundle bundle;

    // ...

    public void setBundle(ResourceBundle bundle) {
        this.bundle = bundle;
    }

}

Тем не менее, это остаетсяnull, Кажется, что это не работает внутри@Named.

Так я зарегистрировал пакет ресурсов вfaces-context.xml:

<application>

    <message-bundle>validator.messages</message-bundle>

    <locale-config>
        <supported-locale>en_US</supported-locale>
        <supported-locale>ua_UA</supported-locale>
    </locale-config>

    <resource-bundle>
        <base-name>lang.messages</base-name>
        <var>msg</var>
    </resource-bundle>

</application>

обновлено автором:

@BalusC Я получаю ошибку

16:29:10,968 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/WEBSearchPrime_JB_lang].[Faces Servlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet Faces Servlet threw exception: org.jboss.weld.exceptions.IllegalProductException: WELD-000054 Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans\\n\\nProducer\: Producer Method [PropertyResourceBundle] with qualifiers [@Any @Default] declared as [[method] @Produces public util.BundleProducer.getBundle()]\\nInjection Point\: [field] @Inject private model.UserBean.bundle

обратите внимание, что я также поставил Serializable интерфейс

Ответы на вопрос(1)

Ваш ответ на вопрос