Я использую пакеты интернационализации Seam 3 для реализации обмена сообщениями в своем приложении.Настройка интернационализации Seam3
Короче говоря, это то, что я делаю:
Импорт/инъекционных необходимых классов:
import org.jboss.seam.international.status.Messages;
import javax.inject.Inject;
@Inject
private Messages messages;
Когда возникает ошибка, я создаю сообщение в моем бэк-боба:
messages.error(new BundleKey("AppMsgResources", "errorMsgKey")).defaults("Error: Something bad happened!");
И наконец, я показываю сообщение на моей странице лиц так:
<h:messages />
Очень стандарт до сих пор я думаю, что ...
Обычай логика Я хочу осуществить это, чтобы иметь возможность сначала проверить таблицу базы данных (назовем эту таблицу MessageBundleOverride) для ключа соответствия сообщений. Если он существует, я хочу использовать значение из таблицы MessageBundleOverride, а не файл свойства. Если он не существует или пуст, я хочу использовать значение, найденное в файле свойств.
Я думаю, что есть способ Weld/CDI сделать это, где я могу реализовать интерфейс сообщений и зарегистрировать его с помощью шва так или иначе, чтобы он собирал реализацию моих сообщений во время «инъекции», а не по умолчанию, как реализация MessageImpl, которая поставляется с пакетом Seam Internationalization. Я немного новичок в Seam/Weld, поэтому не уверен, что это простая вещь.
любая помощь очень ценится, спасибо!