การคืนค่า Return Error Message จาก service ใน Ofbiz

การคืนค่า Return Error Message ใน ofbiz นั้นจะคืนค่าจาก Java หรือ Simple Method ก็ได้ครับ และสามารถเปลี่ยนข้อความที่แสดงผลตาม locale ได้ด้วยครับ แต่ก็ยังมี Return Error Message ที่เรายังไม่สามรถจัดการได้ เช่น Return Error Message จากตัว service เองครับซึ่ง error นี้เกิดจากความต้องการให้ผู้ใช้กรอกข้อมูลแต่ผู้ใช้กลับไม่กรอกข้อมูลใดๆ จึงทำให้เกิด error นี้ขึ้นครับจากตัวอย่าง service ที่เรากำหนด เช่น


Create Valid SkillType




ตัว optional="false" ระบบจะแจ้งเตือนให้ผู้ใช้ต้องป้องข้อมูลครับ เว้นว่างไม่ได้ หากเราทำการสร้าง sercice เสร็จแแล้วเราสามรถดูผลลัพธ์ serviceของเราได้ครับ หลังจาก restart ระบบแล้วให้ไปที่
https://localhost:8443/webtools/control/ServiceList

จากนั้นให้ทำการค้นหา service ของเราในที่นี้คือ service createSkillType ครับเมื่อเจอแล้วให้คลิกเข้าไปเลยครับ เราก็จเจอดังรูป(แล้วแต่ service)
From Programming Hunter

สังเกตกรอบสีเขียวครับ จากที่เรากำหนดใน service ของเราตัวนี้ครับ เป็นตัวบอกให้เราทราบว่าเวลาจะเรียกใช้ service นี้ ต้องกรอกข้อมูลตัวไหนบ้างโดยดูจาก Optional ที่เป็น false ครับ เมื่อ service นี้ทำงานระบบจะแสดงข้อความดังนี้ครับ
From Programming Hunter


เราจะเห็นปัญหาเกิดขึ้นครับ คือผู้ใช้จะไม่รู้ว่าปัญหาที่เกิดขึ้นนั้นคืออะไร เกิดจากอะไร ดังนั้นเราจึงต้องระบุตามภาษานั้นไปเลยครับว่าต้องกรอกข้อมูลช่องไหน ช่องไหนที่ไม่สามารถเว้นว่างได้ เรามาดูวิธีการกันเลยครับ โดยสิ่งเราที่ต้องทำคือการสร้าง uiLabelMap ครับ ให้ทำการเปิดไฟล์ที่มีชื่อว่า ServiceErrorUiLabels.xml ครับอยู่ที่
/framework/service/config/ServiceErrorUiLabels.xml

แล้วให้เพิ่มข้อความดังนี้ครับ

   description field
   ช่อง คำอธิบาย

โดยที่ ชื่อ key นั้นจะต้องเป็นรูปแบบดังนี้ครับ serviceUtil.[ชื่อ service].[ชื่อฟิวด์] ดูตามตัวอย่างเลยครับ หลังจากนั้นไปแก้ไฟล์ ModelService.java ซึ่งจะอยู่ที่
/framework/service/src/org/ofbiz/service/ModelService.java

โดยแก้บรรทัดที่ 518 จาก
message = errMsg + " [" + this.name + "." + missingKey + "]";

เปลี่ยนเป็น
message = errMsg + " : " + UtilProperties.getMessage(ServiceUtil.resource, "serviceUtil." + this.name + "." + missingKey , locale);

และแก้บรรทัดที่ 600 จาก
msg = errMsg +  " [" + mode + "] [" + model.name + "." + key + "]";

เปลี่ยนเป็น
msg = errMsg +  " : " + UtilProperties.getMessage(ServiceUtil.resource, "serviceUtil." + model.name + "." + key , locale);

ในส่วนนี้เราจะทำการแก้แค่ครั้งเดียวครับ คราวหน้าเราก็แค่ไปเพิ่ม uiLabelMap ในไฟล์ ServiceErrorUiLabels.xml ก็พอครับ ซึ่งหลังจากทำตามขั้นตอนดังกล่าวเสร็จแล้วให้ทำการ compile แล้ว start ใหม่ เมื่อรัน service อีกครั้งผลลัพธ์จะเป็นดังนี้ครับ
From Programming Hunter

เป็นอันเสร็จสิ้นกระบวนการแก้ไขครับ

About Nop

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Post a Comment