หลังปีใหม่ผมไม่มีไอเดียอะไรที่จะเขียนเกี่ยวกับ Spring เลย เพราะส่วนตัวไม่ได้ใช้โดยตรง ใช้ผ่านเกรลส์และ Groovy ตลอด
ข่าวที่ใกล้เคียงที่สุดก็เห็นจะเป็นการซื้อ G2One (Groovy และเกรลส์) ของ SpringSource เท่านั้น แต่พอเปิดปีใหม่มาเห็นใน feed เล่นเอาตกใจ เพราะมีบทความใน IBM developerWorks ทีเดียว 2 ตอนรวดจั่วหัวว่า Groovier Spring
ไม่มีสงสัย ผมเปิดดูทันที ทั้งสองบทความและซีรี่ย์ต่อกัน พูดเกี่ยวกับการใช้ Groovy (รวมทั้งบางอย่างของเกรลส์) เพื่อให้สามารถใช้ Spring ได้ง่ายขึ้น
สำหรับตอนแรกนั้นพูดเรื่องพื้นฐานการรวมระบบ และตอนที่สองพูดเรื่องการเปลี่ยนพฤติกรรมของระบบขณะรัน แล้วจะหาเวลามาขยายความต่อไปครับ

และแล้วเราก็กำลังจะรวมร่างกันเป็น g-spring66 ==’
นึกว่า G-String ซะอีกครับ
ผมใช้ Groovy script สำหรับออกรายงาน เหมือนบทความนี้เปียบเลย
แต่ผมมีปัญหาคือ ถ้า Groovy script มีภาษาไทย ผมไม่สามารถระบุ encoding ของ file ได้
ทำให้ต้องเอาภาษาไทยทั้งหมด ออกมาสร้างเป็น property แล้ว inject ให้ Groovy script อีกที
ใน lang:groovy tag น่าจะมี attribute ให้ระบุ encoding ของ file นะครับ
@http://virasak.blogspot.com/
ระบุได้นะครับ ผมใช้อยู่ใน tspec
ดูในตัว runner ของ tspec เลยครับจะมีวิธีบอกให้มันใช้ encoding (ผมใช้ UTF-8)
หมายถึง การ config ใน xml ของ Spring นะครับ
ผมใช้แบบ lang:groovy แล้วระบุ script-source ไป ให้ Spring compile
ให้ เพราะผมต้องการที่จะ reload เวลาแก้ layout รายงานได้ ไม่ได้ compile ไว้ก่อน
แต่ไม่สามารถระบุ parameter ในการ compile จาก tag ที่ Spring
มีให้
หรือว่ามีช่องทางอื่นที่ Spring เตรียมไว้ให้ครับ
@http://virasak.blogspot.com/
ลอง config argument -Dfile.encoding ใน container หรือยังครับ, เท่าที่ดูคร่าวๆ เวลา spring load groovy script กรณีอ้างถึง groovy file, มันจะทำผ่าน ResourceScript ซึ่งภายในใช้ FileReader ในการอ่าน
ส่วนกรณี inline-script ยังไม่เคยแกะ แต่ก็น่าจะเกี่ยวข้องกับวิธีการ parse xml file ของ spring
@http://pphetra.blogspot.com/
วิธีนี้น่าจะ work ครับ แต่ผมไปควบคุมตรงนั้นไม่ได้ จะดีกว่านี้ถ้า lang:groovy มี attribute encoding แล้วให้ ResourceScript เอาไปใช้กับ FileReader
ส่วนเรื่อง inline-script ผมเข้าใจว่าไม่ต้องทำอะไร เพราะ xml ได้ระบุ encoding อยู่แล้ว
เหมือนกับที่ผมแยกออกมาเป็น property ใน xml แล้ว inject เข้าใน Groovy script ผมก็ inline property เป็นไทย ใน xml เลย
อันนี้ตัวอย่างที่ผมแยก
<lang:groovy id="abc" script-source="abc.groovy">
<lang:property name="message">
<props>
<prop key="reportName">ทดสอบ</prop>
</props>
</lang:property>
</lang:groovy>
หลังจากดู api แล้ว ResourceScriptSource ควรจะมี encoding property โดย default ให้ขึ้นกับระบบ
เพราะเป็นตัวแรกที่ตีความจาก Resource เป็น String
@http://virasak.blogspot.com/
อ๋อครับ ผมเข้าไปผิดไป