RichFaces : Component ID _viewRoot:status has already been found in the view.

ทดลองใช้ RichFaces แล้วต้องการให้แสดงสถานะแจ้งว่ากำลังทำงานอยู่ (Process Dialog) ซึ่งใน RichFaces นั้นมี Tag

<a4j:status />

ให้ใช้งานอยู่แล้ว เลยทดลองดังนี้

<a4j:status onstart="{Richfaces.showModalPanel('process-wait')};"
    onstop="{Richfaces.hideModalPanel('process-wait')};" />
<rich:modalPanel id="process-wait" width="250" height="100">
	<f:facet name="header">
		<h:outputText value="Processing" />
	</f:facet>
	<div align="center">
		<h:outputText value="Processing please wait..." /> <br>
	</div>
</rich:modalPanel>

พอทดลองรันแล้วเกิด Error ดังนี้

java.lang.IllegalStateException: Component ID _viewRoot:status has already been found in the view.
	at com.sun.faces.util.Util.checkIdUniqueness(Util.java:724)
	at com.sun.faces.util.Util.checkIdUniqueness(Util.java:708)
	at com.sun.faces.application.StateManagerImpl.saveView(StateManagerImpl.java:129)
	at javax.faces.application.StateManager.saveSerializedView(StateManager.java:183)
	-
	-

Error ที่เกิดขึ้นเนื่องจากในหน้าจอ หรือ page นี้มีการใช้ tag จะไม่สามารถใช้ได้อีก วิธีการแก้ไข
1. ลบ Tag ที่ซ้ำออกแล้วสามารถใช้งานได้เลย
2. manual เปิด dialog เองในปุ่มที่ต้องการให้แสดง เช่น

<a4j:commandButton id="bt-action"
	value="Save" action="#{example.save}"
	onclick="{Richfaces.showModalPanel('process-wait')};"
	oncomplete="{Richfaces.hideModalPanel('process-wait')};" />

Update : 08/05/2012 สามารถใช้ tag หลายๆตัวในหน้าเดียวกันอ้างอิงจาก RichFaces Status โดยระบุ attribute “for” และกำหนด tag ครอบส่วนที่ต้องการให้เรียกใช้ เช่น

<a4j:region id="xx-yy">
     <a4j:commandButton id="bt-action"
	 value="Save" action="#{example.save}" />
</a4j:region>

<a4j:status for="xx-yy" onstart="{Richfaces.showModalPanel('id-here')};"
	onstop="{Richfaces.hideModalPanel('id-here')};" />

ประสบการณ์ : ThinkPad Onsite service

เนื่องจากพัดลมระบายความร้อนโน๊ตบุ๊ค เสียเลยได้โอกาสทดสอบเสียงเล่าเสียงลือการใช้บริการ onsite service ของ ThinkPad ว่าจะสมคำล่ำลือหรือไม่ ลำดับเหตุการณ์ดังนี้
0. วันที่ 16/01/2012 กลับห้องเปิดเครื่องยังไม่ตอนบูตเข้า Windows ก็เจอข้อความ “Fan Error” พร้อมเสียงปี๊บๆ แล้วเครื่องก็ปิดตัวเองไปเลย
1. วันที่ 17/01/2012 ช่วงเช้าโทรไปยัง ศูนย์ให้บริการหลังการขาย 022734088 เสียงน่ารักของ พนักงานก็ให้แจ้ง Model/Serial เล่าอาการ จากนั้นได้หมายเลข Service Code มา ใช้เวลาไปประมาณ 3 นาที
2. วันที่ 18/01/2012 ได้รับโทรศัพท์จากพนักงานซ่อมว่าจะเข้ามาซ่อมเครื่องให้ สะดวกให้ไปซ่อมที่ไหน เลยบอกช่างไปว่าเมื่อวานไม่โทรมาแจ้งก่อนเลยไม่ได้เอาเครื่องมาด้วย เลยขอเลื่อนไปวันที่ 19/01/2012
3. วันที่ 19/01/2012 เวลาประมาณ 10:30 พนักซ่อมโทรมาอีกครั้ง (แต่ไม่ใช่คนเมื่อวาน) ต้องอธิบายสถานที่นัดเจอกันใหม่อีกรอบ จากนั้นอีกประมาณ 20 นาทีพนักงานซ่อมก็มาถึง จัดการถอดชิ้นส่วนต่างๆ และทำการเปลี่ยนพัมลมระบายความร้อน ซึ่งทั้งหมดใช้เวลาไปประมาณ 20 นาที เป็นอันเสร็จงาน

ช่างกำลังจัดการถอดชิ้นส่วนน้องดำ


ชิ้นส่วนที่ต้องเปลี่ยน


เป็นการจบงานได้ในระยะเวลาประมาณ 3 วัน ถ้าส่งซ่อมศูนย์เองอาจใช้เวลาแค่ 1-2 วันแต่สำหรับมนุษย์เงินเดือนผู้ไม่ว่างงานแบบผม ถือว่าประทับใจบริการ onsite service ในระดับดี ระบบการตรวจสอบประกันของ Lenovo Thinkpad เองก็ดีไม่ต้องใช้เอกสารอะไรเลยสามารถตรวจสอบได้จากเว็บโดยตรง พนักงานไม่ถามหาใบเสร็จ

ป.ล ถ้าท่านซื้อเครื่องมาจากต่างประเทศ หรือ เครื่องหิ้ว เวลารับบริการจะต้องใช้ใบเสร็จแสดงที่มาของสิ้นค้า และไม่มีบริการ onsite สำหรับเครื่องนอก ต้องส่งศูนย์อย่างเดียว ศึกษาข้อมูลเพิ่มเติมได้จาก www.thaithinkpad.com

การใช้งาน Web Service JAX-WS 2.1.x ใน GlassFish V1.x (Sun Appication Server 8.2)

มีปัญหาเกี่ยวกับการใช้งาน Web Service client JAX-WS style ใน Sun Appication Server 8.2 ซึ่งไม่สามารถรันได้เกิด Error ดังนี้

java.lang.NoClassDefFoundError: javax/xml/ws/BindingProvider
    at java.lang.ClassLoade​r.defineClass1(Nativ​e Method)
    at java.lang.ClassLoade​r.defineClass(ClassL​oader.java:620)
    at java.security.Secure​ClassLoader.defineCl​ass(SecureClassLoade​r.java:124)
    at org.apache.catalina.​loader.WebappClassLo​ader.findClassIntern​al(WebappClassLoader​.java:1819)
    at org.apache.catalina.​loader.WebappClassLo​ader.findClass(Webap​pClassLoader.java:87​2)
    at org.apache.catalina.​loader.WebappClassLo​ader.loadClass(Webap​pClassLoader.java:13​27)
    at org.apache.catalina.​loader.WebappClassLo​ader.loadClass(Webap​pClassLoader.java:12​06)
    at java.lang.ClassLoade​r.loadClassInternal(​ClassLoader.java:319​)

เนื่องจาก Sun Appication Server 8.2 ที่ใช้งานอยู่ใช้ JDK 1.5 (5.0) ทำให้ไม่มี package javax/xml/ws/ ซึ่งตอนพัฒนาโปรแกรมนั้นในเครื่องสำหรับพัฒนาโปรแกรมใช้ JDK 1.6 (6.0) และใช้ GlassFish V2.1 (Sun Appication Server 9.1) ทำให้ไม่เจอปัญหาดังกล่าว จาการค้นหาข้อมูลการแก้ไขให้สามารถใช้งานได้ ให้ทำดังนี้
1. .ดาวน์โหลด JAX-WS 2.1 จากเว็บ http://jax-ws.java.net แล้วคัดลอก Library

FastInfoset.jar
activation.jar
http.jar
jaxb-api.jar
jaxb-impl.jar
jaxws-api.jar
jaxws-rt.jar
jsr173_api.jar
jsr181-api.jar
jsr250-api.jar
mimepull.jar
resolver.jar
saaj-api.jar
saaj-impl.jar
sjsxp.jar
stax-ex.jar
streambuffer.jar

ไปวางใน

<GlassFish Home>\domains\<domain name>\lib\ext

เนื่องจากไม่อยากให้กระทบกับ domain อื่นๆเลยคัดลอกมาวางใน lib ของ domain นั้นๆ โดย .jar ที่ต้องใช้มีดังนี้ JAX-WS 2.1 Jar dependency
2. จากนั้นทำการ stop/start Server ใหม่ ก็สามารถใช้ได้แล้ว

แหล่งข้อมูล
JAX-WS RI 2.1.3 Release Notes

ปัญหาการใช้ Single quote (‘) ใน SQLite

มีงานที่ต้องใช้ PHP กับ SQLite จากเดิม code ที่เขียนการ intsert ใน Database จะไม่มีปัญหากับการ Insert single quote เพราะใช้กับฐานข้อมูล MySQL คำสั่ง insert เป็นดังนี้

INSERT INTO TB(ID, NAME) VALUES(1, 'Hi I\'m Supot');

สามารถ Insert ข้อมูลได้ปกติไม่มีปัญหาอะไร และ ข้อมูลที่ลงไปก็ถูกต้อง คือ ลง Hi I’m Supot แต่พอเปลี่ยนฐานข้อมูลจาก MySQL ไปเป็น SQLite คำสั่้ง insert ข้างต้นไม่สามารถใช้ได้ เนื่องจากคำสั่งข้อมูลได้มาจากการใช้ function addslashes จากการค้นหาพบงิธีการแก้ไขจากที่นี่ SQL Quoting And PHPเปลี่ยนไปใช้ function sqlite_escape_string

$name = sqlite_escape_string(DATA_XX)

แหล่งข้อมูล
SQL Quoting And PHP
addslashes
sqlite_escape_string

Most important keyboard shortcuts in Eclipse

ห่างหายไปช่วงหนึ่งเนื่องจากงานสุมหัวมากไปหน่อย มีโอกาสได้กลับไปใช้ Eclipse ทำมาหากินอีกครั้งหลังจากที่ใช้งาน Netbeans มาพักใหญ่ เลยแวะไปเจอ Keyboard shortcuts ที่สำคัญและใช้งานบ่อยชนิดที่ ต้องจดบันทึกไว้ อ่านได้จาก

Eclipse Shortcuts for Increased Productivity

 
SEO Powered by Platinum SEO from Techblissonline