Я использую пакеты интернационализации Seam 3 для реализации обмена сообщениями в моем приложении.
Короче, вот что я делаю:
Импорт / Внедрение необходимых классов:
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, где я могу реализовать интерфейс Messages и каким-то образом зарегистрировать его в seam, чтобы он принимал мою реализацию сообщений во время «внедрения», а не реализацию по умолчанию MessagesImpl, которая приходит с пакетом интернационализации шва. Я немного новичок в Seam / Weld, поэтому не уверен, что это просто.
любая помощь очень ценится,
спасибо!