ฉันกำลังใช้แพ็คเกจ Seam 3 Internationalization เพื่อใช้งานการรับส่งข้อความในแอปพลิเคชันของฉัน
กล่าวโดยสรุปนี่คือสิ่งที่ฉันทำ:
การนำเข้า/การฉีดคลาสที่จำเป็น:
import org.jboss.seam.international.status.Messages;
import javax.inject.Inject;
@Inject
private Messages messages;
เมื่อมีข้อผิดพลาดเกิดขึ้น ฉันจะสร้างข้อความใน Backing Bean ของฉัน:
messages.error(new BundleKey("AppMsgResources", "errorMsgKey")).defaults("Error: Something bad happened!");
สุดท้ายนี้ ฉันแสดงข้อความในหน้าใบหน้าของฉันดังนี้:
<h:messages />
มาตรฐานมากจนถึงตอนนี้ฉันคิดว่า ...
ตรรกะที่กำหนดเองที่ฉันต้องการใช้คือสามารถตรวจสอบตารางฐานข้อมูลก่อน (ให้เรียกตารางนี้ MessageBundleOverride) เพื่อหาคีย์ข้อความที่ตรงกัน หากมีอยู่ ฉันต้องการใช้ค่าจากตาราง MessageBundleOverride ไม่ใช่ไฟล์คุณสมบัติ หากไม่มีอยู่หรือว่างเปล่า ฉันต้องการใช้ค่าที่พบในไฟล์คุณสมบัติ
ฉันคิดว่ามีวิธี Weld/CDI ในการทำเช่นนี้โดยที่ฉันสามารถใช้อินเทอร์เฟซ Messages และลงทะเบียนด้วยตะเข็บเพื่อให้รับการใช้งานข้อความของฉันในระหว่าง "ฉีด" และไม่ใช่การใช้งาน MessagesImpl เริ่มต้นที่มาพร้อมกับ Seam Internationalization บรรจุุภัณฑ์. ฉันยังใหม่กับ Seam / Weld นิดหน่อย เลยไม่แน่ใจว่านี่เป็นเรื่องง่ายที่จะทำหรือไม่
ความช่วยเหลือใด ๆ ที่ชื่นชมมากขอบคุณ!