Как определить область действия локали? - PullRequest
0 голосов
/ 27 марта 2011

Я хочу создать разные экземпляры Bean для разных локалей в моей программе, но я не слишком много знаю о механизме определения области действия в Spring CDI.Как scope-proxy определяет, какой прокси-целевой объект следует перенаправить, если одновременно используются два экземпляра одного и того же bean-объекта в области запроса?

Я могу получить предпочтение Locale из запроса http, а затем яхочу получить правильный бин в этой конкретной локали.Вместо того, чтобы использовать область «прототип», Locale-scope создаст только несколько экземпляров только для используемых локалей.Лично я хочу что-то подобное по-своему:

@Component
@Scope("locale")
class MyService {

    @Inject
    @Named("scope-invariant")
    public MyService(Locale locale) {
        ResourceBundle nls = getResourceBundle(..., locale);
        // ...
    }

}

@Controller
class MyController {

    void service(HttpServletRequest req, HttpServletResponse resp) {
        UserPreference userPreference = getUserPreference(req, res.getSession(), ...);
        Locale userLocale = userPreference.getUserLocale();

        applicationContext.doInScope(
            new ScopeBinding("locale", userLocale), 
            new ScopedCallback() {

                @Inject
                MyService service;

                void execute() {
                    // ...
                }

            });
    }

}

Ну, это явно не работает.

Есть идеи?

1 Ответ

0 голосов
/ 15 октября 2011

См. связанную страницу вики для реализации LocaleBeanScope

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...