Saya menggunakan paket Internasionalisasi Seam 3 untuk mengimplementasikan perpesanan di aplikasi saya.
Singkatnya, inilah yang saya lakukan:
Mengimpor/Menyuntikkan kelas yang diperlukan:
import org.jboss.seam.international.status.Messages;
import javax.inject.Inject;
@Inject
private Messages messages;
Ketika terjadi kesalahan, saya membuat Pesan di backing bean saya:
messages.error(new BundleKey("AppMsgResources", "errorMsgKey")).defaults("Error: Something bad happened!");
Terakhir saya menampilkan pesan di halaman wajah saya seperti:
<h:messages />
Sangat standar sejauh ini menurut saya...
Logika khusus yang ingin saya terapkan adalah agar dapat memeriksa tabel database terlebih dahulu (sebut saja tabel ini MessageBundleOverride) untuk kunci pesan yang cocok. Jika ada, saya ingin menggunakan nilai dari tabel MessageBundleOverride dan bukan file properti. Jika tidak ada atau kosong, saya ingin menggunakan nilai yang ditemukan di file properti.
Saya berpikir ada cara Weld/CDI untuk melakukan ini di mana saya dapat mengimplementasikan antarmuka Pesan dan mendaftarkannya dengan jahitan sehingga dapat mengambil implementasi pesan saya selama "injeksi" dan bukan implementasi MessagesImpl default yang disertakan dengan Internasionalisasi Seam kemasan. Saya sedikit baru mengenal Seam / Weld jadi tidak yakin apakah ini hal yang mudah untuk dilakukan.
bantuan apa pun sangat dihargai, terima kasih!