go to http://oracle.in.th

Saturday, July 31, 2010

JSF 2.0 Template

อารมณ์ดีมาจิบกาแฟดูสาวๆ ที่ดอยตุงสีลม กับบทความที่เป็นเนื้อหาเรื่องสุดท้ายแล้วครับกับ Template ทีนี้ก็มาเริ่มกันก่อนว่าทำไมต้องมี Template เคยไหมครับที่เขียนเว็บแล้วจะมีส่วนที่ซํ้ากันในทุกๆ หน้าที่เราเขียน แล้วพอแก้ทีก็ต้องไปไล่แก้กันทุกหน้าเลย น่าเบือนะครับ วันนี้เราจะมาเสนอทางเลือกเพือจัดการปัญหานี้กัน

โดยหลักการของ Template คือเราจะสร้าง html template (ซึ่งก็จะไว้สำหรับกำหนดโครงของหน้าเว็บเราว่าจะเป็นอย่างไร แล้วทีนี้เราก็ไปสร้าง aa.jsf, ab.jsf ที่เป็นส่วนที่เป็นเนื้อหาแต่ละหน้า แล้วเวลาที่ user request มาก็ให้มัน render รวมกันออกมาเป็นหน้าเว็บที่เราต้องการ

งงไหมครับ ถ้างงก็อย่าแปลกใจ พอเห็นตัวอย่างจะรู้ว่ามันง่ายกว่าที่คิดเยอะเลยครับ ทีนี้ก็ ลอง update svn เพือเอาไฟล์ลงมากันเลยซึ่งหลักๆจะมี 2 ไฟล์คือ templatenormal.xhtml, template.xhtml ที่นี้เรามาดูส่วนของ template กันก่อนคือ

ถ้าเปิด templatenormal.xhtml ดูจะเห็นว่าเป็น xhtml ธรรมดาๆเลย แต่จะมีในส่วนของ ui:insert เพิ่มเข้ามา
<ui:insert name="title" /> , <ui:insert name="content" />

ลองเปิด template.xhtml ดูบ้างก็จะเห็นว่าเป็น xhtml ปกติๆ อีกเหมือนกัน แต่จะมีในส่วนของ <ui:composition template="/layout/templatenormal.xhtml" > ที่เพิ่มเข้ามา อ้างไปถึง template file ที่เราต้องการนั่นเอง และอีกส่วนคือ <ui:define name="title" ....... <ui:define name="content" .......

สังเกตุไหมครับอันนึงบอกว่า ใส่ title,content อันนึงกำหนดส่วน insert, content ...

แล้วอย่างนี้ถ้าเรารัน template.jsf หร่ะ อะไรจะเกิดขึ้น ก็จะได้ หน้าจอแบบที่สร้างใน templatenormal แต่มี data บางส่วนมาจาก template

เนี่ยแหละครับสมมุติวันดีคืนดีเราเปลี่ยน template หร่ะ ก็ไปแก้แค่ทีเดียว ทั้งโปรเจคเราก็เปลี่ยนตามแล้ว เป็นไงครับ JSF ง่ายดีไหม? ^ ^

หมดนี้คงเป็นตัวอย่างที่เป็นรูปเป็นร่างหน่อยละครับ แต่ยังไม่ชัวร์ว่าจะให้มีในส่วนของ db หรือเปล่าก็คงแล้วแต่ความสะดวก(กัวว่าถ้าเพิ่มมากแล้วจะทำให้รันไม่ได้เพราะติดนู่นติดนี่ แล้วจะพาลไม่ยอมหัดกัน เลยอยากแยกส่วนเนื้อหาให้ชัดเจนไปก่อนน่ะครับ)

copyright 2010 @nuboat in wonderland
ข้อเขียนนี้ช่วยฉัน:  

Thursday, July 29, 2010

Newsletter ประจำเดือน สิงหาคม 2010


Newsletter ของ Oracle User Group in Thailand ฉบับที่ 2 ประจำเดือน สิงหาคม 2010 ออกมาแล้วนะคะ รับรองฉบับนี้ คุณจะไม่พลาดกับ Oracle Business Intelligence 11g ที่เพิ่งออกใหม่มาสด ๆ ร้อน ๆ , event ดี ๆ สำหรับ developer กับ Oracle Tuxedo, เว็บ OTN โฉมใหม่ เฉี่ยวกว่าเดิม และอื่น ๆ อีกมากมาย พร้อมมีแจกโปรแกรม java แบบฟรี ๆ

มาติดตามข่าวสารใหม่ ๆ คัดเรื่องทีี่่น่าสนใจ บทเรียนน่าศึกษา เทคนิคแบบเจ๋ง ๆ กับเราที่นี่ทุกเดือน คลิกที่นี่เลย News Letter: August 2010
ข้อเขียนนี้ช่วยฉัน:  

Monday, July 26, 2010

JSF 2.0 Repeat, Datatable & AJAX

หายอู้แล้ว โผล่มาอัพ #jsftutorail กันต่อ ก็ใกล้จบแล้วนะครับสำหรับ Tutorial ง่ายๆนี้ วันนี้จะมาให้ดูในส่วนของ Table, Repeat ครับซึ่งก็จากชื่อก็เห็นแล้วว่าไว้จัดการกับพวก data ที่เป็น collection กัน

มาดูกันที่ Repeat ก่อนครับ อันนี้สำหรับลูปในการสร้าง html จริงๆ จะเอาไปทำไรก็ได้ตามต้องการ
โดยจะได้ว่า uv จะแทน instance ของ uvlist ของ uiRepeatManagedBean
<ui:repeat var="uv" value="#{uiRepeatManagedBean.uvlist}" >
--<tr>
----<td>#{uv.name}<t/td>
----<td>#{uv.username}<t/td>
----<td>#{uv.group}/<ttd>
--</tr>
</ui:repeat>

*คล้ายๆกับ for( String str : lists) นั่นแหละครับ
ลองดูแบบเต็มที่ สองไฟล์นี้ครับ UiRepeatManagedBean.java, uirepeat.xhtml ครับ

มาดู Datatable กันต่อเลย จะเห็นว่าเราสามารถสร้าง Table ได้ตามรูปข้างล่างเลยครับ
<h:dataTable var="user" value="#{dataTableManagedBean.userViews}" border="1" cellpadding="5" cellspacing="0">
--<h:column>
----<f:facet name="header">Name</f:facet>
----#{user.name}
--</h:column>
--<h:column>
----<f:facet name="header">Username</f:facet>
----#{user.username}
--</h:column>
--<h:column>
----<f:facet name="header">Group</f:facet>
----#{user.group}
--</h:column>
</h:dataTable>

<f:facet ... > เป็นการกำหนด Header ของ Table นั้นๆ
ลองดูแบบเต็มที่ สองไฟล์นี้ครับ DataTableManagedBean.java, datatable.xhtml ครับ


เรื่องสุดท้าย Ajax ใน JSF2.0
<h:form id="formid" >
--Time : #{ajaxManagedBean.timenow} <br />
--<h:outputText value="Tpye here : "/>
--<h:inputText value="#{ajaxManagedBean.str}" required="true" /> 
--<h:commandButton action="#{ajaxManagedBean.echo}" value="AJAX BTN" >
----<f:ajax execute="@form" render="formid:resultid" />
--</h:commandButton> 
--<h:commandButton action="#{ajaxManagedBean.echo}" value="OK" /><br />
--<b><h:outputText value="#{ajaxManagedBean.echoStr}" id="resultid" /></b>
</h:form>
ลองดูนะครับ ผมได้กำหนดให้ "AJAX BTN" เป็น Button แบบ Ajax ผ่าน โดยให้มันส่ง data ที่อยู่ใน < ทั้งหมดกลับไป(เราสามารถกำหนดได้ว่าจะให้ส่งอะไรกลับไปบ้าง) ส่วนคำสั่ง render คือให้มันเรนเดอร์ <h:outputText id="resultid" ... /> ใหม่นั่นเอง

ลองดูแบบเต็มที่ สองไฟล์นี้ครับ AjaxManagedBean.java, ajax.xhtml ครับ


จบแล้วเป็นไงง่ายไหมครับ ^ ^ จะเห็นว่าไม่มีอะไรเลยใช่ไหมครับ ก็บอกแล้วว่า JSF อะง่ายมาก อะฮิๆ ไว้เดี๊ยวผมจะมาลองสร้างหน้า search แบบ AJAX ให้ดูสักหน้า เพือให้เห็นว่าโค้ดจริงๆ มันก็ใช้ความรู้เล็กๆ ที่ผมไล่มาตั้งแต่ต้นเนี่ยแหละในการสร้าง Web Application อย่างท่ี่ต้องการ

copyright 2010 @nuboat in wonderland
ข้อเขียนนี้ช่วยฉัน:  

Thursday, July 22, 2010

วิธีเปลี่ยนเมนูภาษาไทยเป็นอังกฤษใน Oracle Developer Suite 10g

เมื่อติดตั้ง Oracle Developer Suite 10g ได้เมนูเป็นภาษาไทย รู้สึกใช้งานยาก ต้องการเปลี่ยนเป็น Eng ทำอย่างไร? วันนี้ผมมีวิธีแก้มาบอกครับ

การแก้ปัญหาต้องการเปลี่ยนเมนูของ Oracle Developer Suite 10g จากภาษาไทยให้เป็นภาษาอังกฤษ

ขั้นตอนการแก้ปัญหาสามารถทำได้ดังนี้
1. Start > Run และพิมพ์ regedit


2. ที่แท็บ HKEY_LOCAL_MACHINE ทำการค้นหา registry ที่ชื่อ nls_lang ของ Developer Suite ซึ่งแต่ละเครื่องอาจจะอยู่ที่ Path ต่างๆกันไป สามารถทำการค้นหาได้ โดยคลิกขวาที่ HKEY_LOCAL_MACHINE และกด Find จากนั้นพิมพ์n ls_lang และกด Find (ในที่นี้ อยู่ที่ HKEY_LOCAL_MACHINE > SOFTWARE >Wow6432Node > ORACLE > KEY_DevSuiteHome1)


3. คลิกขวาที่ nls_lang และเลือก Modify ให้ทำการแก้ไขค่าจาก THAI_THAILAND.TH8TISASCII ให้เป็น AMERICAN_AMERICA.TH8TISASCII ซึ่งการแก้ไขแบบนี้ จะทำให้เมนูของ Oracle Developer Suite กลายเป็นภาษาอังกฤษ และยังสามารถเก็บข้อมูลหรือแสดงผลเป็นภาษาไทยได้อีกด้วย จากนั้นกด OK


4. ทำการ Restart เครื่อง จากนั้นเมนูของ Oracle Developer Suite จะกลายเป็นภาษาอังกฤษแล้วครับ

Credit by Yong
ข้อเขียนนี้ช่วยฉัน:  

Tuesday, July 20, 2010

ติดตั้ง Oracle แล้วติดปัญหา Swap size ทำอย่างไรดี??

สวัสดีครับ วันนี้ผมเอาปัญหาที่พบเจอกันบ่อย ๆ ในระหว่างการติดตั้ง Oracle มาให้อ่านกันครับ ซึ่งผมเชื่อว่าคงมีใครหลาย ๆ คน ได้เจอปัญหานี้กันมาบ้างแล้ว (ตัวผมก็คนนึงล่ะ) เอาเป็นว่า มาดูรายละเอียดกันดีกว่า...



สำหรับคนที่เคยทำการ ติดตั้ง Oracle Database 11gR2 ใน Linux Redhat อาจะจะได้พบกับ Error ต่าง ๆ ที่แสดงให้เห็นในขั้นตอนของ Prerequisite Check ซึ่งถ้าเป็น Error ทั่วไป คุณก็สามารถกดปุ่ม Fix & Chack Again เพื่อให้ระบบทำการ fix error ให้อัตโนมัติ แต่ในกรณีนี้ Error ของผมที่เจอมากับตัวคือ Swap Size ซึ่งตอนที่ผมทำนั้น ผมทำการติดตั้งใน VMware โดยติดตั้ง oracle db11201 ตาม OBE ใน Linux Redhat แล้วแบ่ง Swap space น้อยไป

Error Message:

This is a prerequisite condition to test whether sufficient 
total swap space is available on the system. (more details)
Expected Value : 2.22GB (2332980.0KB)
Actual Value : 2GB (2097144.0KB)
ที่เกิด Error นี้ ก็เป็นเพราะว่่า ในขณะติดตั้ง oel5 กำหนดขนาด swap partition ไว้น้อยไป

วิธีแก้ก็มีอยู่ 2 ข้อคือ
1. ลง OS ใหม่ซะเลย หรือ
2. เพิ่ม swap space นั่นเอง

การจะลง OS ใหม่ ก็เสียเวลา...ฉะนั้น มาดูวิธีการเพิ่ม swap space ดีกว่า

1.เริ่มจาก login เข้าใช้โดย user root

2. เปิด terminalแล้วพิมพ์คำสั่งตามนี้ครับ
dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
โดยที่ count=524288 คือค่าที่ได้จาก 1024*512(ค่าที่อยากเพิ่มเป็น Mb) ช่วงนี้ก็รอสักครู่นะครับ

3. หลังจากนั้นก็ set up swap area ครับ ด้วยคำสั่ง
mkswap /swapfile1

4. เสร็จแล้วเราก็ Active swapfile1 ด้วยคำสั่ง
swapon /swapfile1

5. ต่อไปจะทำให้ swapfile1 ถูกเรียกทุกครั้งหลังจากที่เปิดเครื่องมาใหม่
vi /etc/fstab
เพื่อเปิดไฟล์ fstab ขึ้นมาแก้ โดยเพิ่ม
/swapfile1 swap swap defaults 0 0 
ต่อท้ายของของไฟล์ เป็นอันเสร็จครับ ทีนี้หลังจากนี้เราก็จะได้ swap file ที่มีขนาดใหญ่ขึ้นครับ

6. สามารถใช้คำสั่ง
free -m
เพื่อเช็คขนาดของ swap file ของเราได้ครับ

Credit by Pelay

อ้างอิง
ข้อเขียนนี้ช่วยฉัน:  

Friday, July 16, 2010

แจกโปรแกรม Password Generator แบบเบาๆ

เรื่อง Java ใน blog ห่างหายไปนานเลย... เพราะช่วงนี้จะอัพแต่เรื่อง Oracle ซะส่วนใหญ่
วันนี้มีโอกาส ก็เลยเอาเรื่อง Java แบบเบาๆ มาให้อ่านกันนะครับ


คือเรื่องมันมีอยู่ว่า วันนึงผมบังเอิญต้องคิด Password ขึ้นมาใช้งานโดยที่มันต้องมีทั้งตัวเลขและตัวอักษร โดย Password ที่จะคิดขึ้นมานั้น ต้องเอาไปใช้ในเรื่องที่สำคัญซะด้วยสิ...

ซึ่งจะให้ผมคิดเองก็คิดไม่ออกว่าจะคิดออกมาอย่างไรดี ให้มันดู Secure มากที่สุดเอาแบบที่ว่าให้คนอื่นคิดไม่ถึงหรือไม่สามารถเดาได้เลย พร้อมกันนั้น ต้องให้ Password นั้นดูแล้วเราก็สามารถจำได้ง่ายๆ จะได้ไม่ลืมด้วย ไม่ใช่ว่าคิด Password ซะเลิศหรู ดูดี แต่พอมาใช้งานจริง เรากลับจำไม่ได้เองซะงั้น...

ไปๆ มาๆ ผมก็เลยมี idea ขึ้นมา... สร้างตัว Generate password เลยดีกว่า
ซึ่งแน่นอนเลย ผมก็เขียนขึ้นมาใน java นั่นเอง

หลักการที่ผมเขียนเจ้าตัว Password Generator นี้ก็ไม่ซับซ้อนแถมวิธีใช้ก็ง่ายเช่นเดียวกัน ก็แค่ให้มัน generate password ให้ผมขึ้นมาเลย เช่น

890A1UMQ8B
WPD3AMHU
889EO6Q8
3TEG8439S8
3CE609SK
JIKY661A42
T0M770Z2
7119IG2FJ
45977DII9I
P35D7571

แล้วผมก็เอามาดูว่า ตัวไหนที่มันสวยจำง่าย ก็เอามาใช้เป็น Password ซะเลย เช่น
889EO6Q8 หรือ T0M770Z2
ทั้งสวย จำง่าย แถมคนอื่่นยังคิดไม่ถึงด้วย ;P

เท่านี้ ต่อไป ผมก็ไม่ต้องมานั่งเสียเวลาในการคิด Password อีกต่อไปแล้วละครับ
คุณสามารถ Download Password Generator ตัวนี้ไปทดลองเล่นได้เลยจากที่นี่ครับ
Download Source Code

ขอให้สนุกกับ Password Generator นะครับ ^^

Credit by @plaumkamon
ข้อเขียนนี้ช่วยฉัน:  

Wednesday, July 14, 2010

WebCenter 11g เวอร์ชั่น 11.1.1.3 ได้รับการรับรองแล้ว

หลังจากที่ Oracle WebCenter Suite ได้เปิดตัวออกมา ตอนนี้ทาง oracle ได้ทำการพัฒนา WebCenter 11g ใน patch 11.1.1.3 แล้ว และสามารถใช้งานได้ใน Oracle E-Business Suite Release 12 (12.0.4 และสูงกว่า หรือ 12.1.1 และสูงกว่า) ได้อย่างสมบูรณ์แบบ ส่วน WebCenter 11g version 11.1.1.2 (a.k.a. Patchset 1) ที่เปิดตัวเมื่อต้นปีนั้น ก็สามารถใช้ได้กับ Oracle E-Business Suite Release 12 เช่นกัน

Oracle WebCenter Suite คืออะไร? สามารถหาคำตอบได้จาก บทความ นี้


สำหรับผู้ที่ต้องการทราบวิธี installation และ configuration สามารถดูได้จาก documentation นี้:

Certified EBS 12 Platforms
  • Linux x86 (Oracle Enterprise Linux 4, 5)
  • Linux x86 (RHEL 4, 5)
  • Linux x86 (SLES 10)
  • Linux x86-64 (Oracle Enterprise Linux 4, 5)
  • Linux x86-64 (RHEL4, 5)
  • Linux x86-64 (SLES 10)
  • Oracle Solaris on SPARC (64-bit) (9, 10)
  • HP-UX Itanium (11.23, 11.31)
  • HP-UX PA-RISC (64-bit) (11.23, 11.31)
  • IBM AIX on Power Systems (64-bit) (5.3, 6.1)
  • Microsoft Windows Server (32-bit) (2003; 2008 for EBS 12.1 only)

อ้างอิง
ข้อเขียนนี้ช่วยฉัน:  

Friday, July 9, 2010

Oracle Database Vault

Oracle Database Vault คืออะไร ? ในบทความวันนี้ ผมจะมาอธิบายข้อดีคร่าว ๆ ของการใช้เจ้าตัวนี้ ให้ทุกท่านได้อ่านกันนะครับ

Oracle Database Vault
คือส่วนหนึ่งของ database security ครับ โดยจะทำหน้าจำกัด user ผู้เข้าใช้ database ให้สามารถเข้าได้เฉพาะ user ที่ได้รับอนุญาติหรือเป็น DBA นั่นเองครับ ทั้งนี้เพื่อความปลอดภัยของ application ต่าง ๆ ที่ต้องการ security โดยมีหลักการ security ตามข้อบังคับต่าง ๆ เช่น Sarbanes-Oxley, Payment Card Industry (PCI) Data Security Standard (DSS), Health Insurance Portability and Accountability Act (HIPAA)และ อื่น ๆ ที่เกี่ยวข้องกับ security ใน data integrity และ data privacy โดย Oracle Database Vault จะทำการป้องกันการเข้าใช้ database ตาม environtment ต่างๆที่ต้องการ เช่น วันเวลาที่เข้าใช้, IP Address ของผู้เข้าใช้, ชื่อเข้า application ที่เข้ามาใช้ และการ authentication user ต่าง ๆ

โดยการใช้ Oracle Database Vault มีข้อดีดังนี้ครับ
  • Pro-actively safeguard application data stored in the Oracle database คือการป้องกันไม่ให้ผู้ใช้ที่ไม่ผ่านการ authentication เข้ามาใช้ข้อมูลได้
  • Address regulatory requirements คือการแบ่งความรับชอบตามหน้าที่ของ user
  • Restrict ad-hoc access to application data เป็นการป้องกันการใช้ application ที่ไม่ได้รับอนุญาติให้เข้าใช้ ด้วย multi-factor policies
  • Deploy with confidence สามารถติดตั้งได้กับ Oracle E-Business Suite, Oracle PeopleSoft, และ Oracle Siebel CRM
  • Realms เป็นการรวม schemas, object และ role ต่างๆที่ต้องการให้มี secure ไว้ด้วยกัน และกำหนดสิทธิ์ให้เฉพาะบาง user หรือ role มีสิทธิ์เข้าถึงข้อมูลเหล่านั้นได้
  • Command Rules เป็นการกำหนดให้ user สามารถ execute คำสั่งได้บางคำสั่ง
  • Factors เป็นการกำหนดการเข้าถึงข้อมูลโดยใช้ factor ซึ่งจะเก็บค่าต่างๆเช่น user location, database IP address หรือ user's session
  • Rule Sets คือ rule หรือกลุ่มของ rule ที่ใช้ร่วมกับ realms, command rule, factor และ secure application role
  • Secure Application Role เป็น special role ที่สามารถใช้ร่วมกับ rule set ได้
Credit by Ice, Yong

อ้างอิง
ข้อเขียนนี้ช่วยฉัน:  

Friday, July 2, 2010

Oracle User Group in Thailand - News Letter: July 2010 มาแล้ว

สวัสดีครับทุกท่าน

สำหรับโพสนี้ ไม่มีอะไรมากมาย เพียงแค่ผมอยากจะประชาสัมพันธ์จดหมายข่าวของเรากันซะหน่อย หรือ Oracle User Group in Thailand Newsletter ฉบับที่ 1 ประจำเดือน กรกฎาคม นั่นเอง

โดย Newsletter นี้ จะประกอบไปด้วยเรื่องราวต่าง ๆ ที่น่าสนใจเกี่ยวกับ Oracle ไม่ว่าจะเป็นเทคนิคต่าง ๆ, ข่าวสารใหม่ ๆ, Events ที่น่าสนใจ, เรื่องน่ารู้ต่าง ๆ ที่คุณไม่ควรพลาด ส่งตรงให้คุณถึงที่

ซึ่ง Newsletter นี้ จัดทำโดยทีมงานของ Oracle User Group in Thailand ทุกท่าน พร้อมที่จะให้ทุกท่านได้รับรู้ข่าวสารต่าง ๆ อัพเดทไปกับเรานะครับ

ถ้าสนใจอ่าน คลิกที่ Link นี้ได้เลย
Oracle User Group in Thailand: News Letter: July 2010

ปล. ครั้งนี้เป็นครั้งแรก ถ้ามีข้อแนะนำ ติชม หรือเสนอแนะ ก็ Comment บอกกันได้นะครับ ผมจะได้ไปปรับปรุงให้ดีขึ้น

...ขอบคุณมากครับ
ข้อเขียนนี้ช่วยฉัน:  

Thursday, July 1, 2010

JSF 2.0 Properties and Localization

หนีมาเที่ยวเชียงใหม่ เขียนจากวันว่างๆที่ไม่มีอะไรทำ กับร้านกาแฟที่ไม่รู้ชื่อร้านใกล้กองบิน 41ฝั่งตรงข้ามร้านหนมเส้น และเนื่องจากเล่นทวิตเตอร์ไป เขียนไป ดูสาวเชียงใหม่น่ารักๆไป ... เลยขอเป็นเรื่องง่ายๆ ละกันครับ แหะๆ

งั้นวันนี้เรามาดูเรื่องการใช้ *.properties และการกำหนด localization ครับใน jsf ครับ
ทีนี้สำหรับคนที่เคยเขียน java มาก่อนจะรู้ว่า java จะมี api สำหรับให้มันโหลด properties files มาเก็บไว้ใน memory ทำให้เร็วเวลาที่จะเรียกใช้นะครับ แต่ในบทนี้เราจะดูถึงการเอา properties file มาเพื่อจัดการการแสดงผลใน java และการทำเว็บสำหรับหลายภาษาผ่าน properties

มาดูกันก่อนว่าต้องดูที่ไฟล์ไหนบ้าง

localization.xhtml, properties.xhtml, LocalizationManagedBean.java, webmessage.properties, webmessage_th.properties

ก็ update or check out กันลงมาได้เลยครับ

ไปดูกันที่ properties.xhtml กันก่อนเลยครับ

<f:loadBundle basename="cc.nuboat.messages.webmessage" var="msg"/>


ประกาศให้ msg แทน properties นั่นๆ ทีนี้ก็สามารถที่จะอ้างถึง message ใน webmessgae.propeties ได้แล้วครับ

<h:head>
----<title>#{msg.title_properties}</title>
</h:head>


**ข้องี่เง่าอย่างของ jsf คือ ถ้า key ใน *.properties เป็น title.properties จะไม่ได้นะครับ (ทั้งที่ควรจะได้) ถ้าอยากรู้ว่าไมไ่ด้จริงลองเปลี่ยน #{msg.title_properties} เป็น #{msg.title.properties} ดูแล้วลองรันดูครับ

ต่อไปคืออะไร จะเห็นว่าเรามี webmessage.properties, webmessage_th.properties ทีนี้ในโค้ดเราจะไปเรียก webmessage แต่เราจะมาทำให้ jsf ไปเรียกใช้ webmessage_th แทนโดยไม่ต้องแก้โค้ดใหม่เลย(ลองนึกถึงโปรแกรมหรือเว็บที่เปลี่ยนภาษาของเมนูต่างๆได้)

ไปดูกันที่ localization.xhtml กันเลยครับ

<f:view locale="#{localizationManagedBean.locale}">

<f:loadBundle basename="cc.nuboat.messages.webmessage" var="msg"/>


จะเห็นว่าผมมีการกำหนด locale ของ jsf ใหม่โดยใช้ค่าที่ get มาจาก localizationManagedBean เพิ่มด้วย

ลองรัน http://127.0.0.1:8080/easyjsf/localization.jsf ดูเลยครับ

ทีนี้จะแสดงผลเป็นภาษาไทยแทนแล้วซึ่งเป็น value จาก webmessage_th แล้ว ^ ^

copyright 2010 @nuboat in wonderland
ข้อเขียนนี้ช่วยฉัน: