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