refresh form submit
#1
Posted 11 June 2005 - 12:40 AM
#2
Posted 11 June 2005 - 03:07 PM
potato, on Jun 11 2005, 12:40 AM, said:
<{POST_SNAPBACK}>
เห็นได้ชัดว่าศึกษา Struts ในขณะที่ความรู้ HTTP ไม่แน่นพอ
เมื่อทำ action แล้ว ให้ใช้ HTTP Redirect เพื่อ เปลี่ยนโปรโตคอลจาก HTTP POST เป็น HTTP GET เวลากด reload ที่ browser จะไม่มีการ POST form อีกครั้ง
#3
Posted 11 June 2005 - 09:34 PM
fromhell, on Jun 11 2005, 03:07 PM, said:
เห็นได้ชัดว่าศึกษา Struts ในขณะที่ความรู้ HTTP ไม่แน่นพอ
เมื่อทำ action แล้ว ให้ใช้ HTTP Redirect เพื่อ เปลี่ยนโปรโตคอลจาก HTTP POST เป็น HTTP GET เวลากด reload ที่ browser จะไม่มีการ POST form อีกครั้ง
<{POST_SNAPBACK}>
5555 ผมชักชอบ style การตอบกระทู้ของคุณมาจากนรกแล้วสิ แบบนี้เขาเรียกว่าติเพื่อก่อครับ ชอบจริงๆ
#4
Posted 11 June 2005 - 10:38 PM
แต่ว่าใช้ HTTP Redirect ทำต่อจากหลัง action ยังไงเหรอครับ ยังไม่ค่อยเข้าใจเลย แล้วถ้ามันเปลี่ยนจาก post เป็น get แล้วมันจะช่วยยังไงเหรอครัย
#5
Posted 12 June 2005 - 12:01 AM
ข้อมูลเพิ่มเติมครับ
http://www.theserver...thread_id=28366
http://www.theserver...thread_id=29758
#6
Posted 12 June 2005 - 01:24 PM
#7
Posted 13 June 2005 - 12:33 AM
อีกบทความที่อธิบายเรื่องนี้ http://www.javaworld.com/javaworld/javatip...javatip136.html
Pattern นี้อธิบายอยู่ในหนังสือ Core J2EE Patterns หน้า 77 ครับ
#8
Posted 16 June 2005 - 10:36 AM
isTokenValid(request) นี้อ่ะครับมัน return false ตลอดเลยอ่ะครับ ผมลองพิมพ์ออกมาดู ยังไงมันก็ false อยู่ดี ผมยังทำอะไรผิดไปหรือเปล่าครับ ผมลองเขียน Action ยังงี้อ่ะครับ
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
System.out.println("+++++++IN test1+++++++++++");
System.out.println("status before =" + isTokenValid(request) );
if (isTokenValid(request)) {
System.out.println("true");
} else {
System.out.println("false");
}
saveToken(request);
System.out.println("status after =" + isTokenValid(request) );
return mapping.findForward( "success");
}
#9
Posted 16 June 2005 - 12:16 PM
รายละเอียดที่เกี่ยวข้องลองไปอ่านที่ isTokenValid(request) is always returning false กับ class org.apache.struts.action.Action JavaDoc ดูนะครับ
#10
Posted 16 June 2005 - 02:11 PM
แล้วผมก็ลองทำตามแล้ว แต่ก็ยังงง แล้วมันก็ยัง return false
แล้วถ้ามันต้อง saveToken() ตั้งแต่ Action ตัวก่อน แล้วมาถึง Action ตัวปัจจุบันถึงจะใช้ isTokenValid() ได้
ผมก็ลอง saveToken() ตั้งแต่ Action ตัวแรก ๆ แล้ว แล้วพอตัวถัดมา ลองเช็ค isTokenValid() ก็ยังได้ false อยู่ดีอ่ะครับ
ขอถามเพิ่มอีกนิดนะครับ แล้วถ้าผม saveToken() ตั้งแต่ Action ตัวก่อน แล้วมันจะช่วยยังไงให้เวลาผมกด refresh แล้วไม่ต้องทำตัว Action ตัวปัจจุบันอ่ะครับ ไม่เข้าใจอ่ะครับ
ต้องขอโทษด้วยนะครับ ที่ความรู้ผมยังน้อย เลยเข้าใจอะไรยาก ๆ ๆ
#11
Posted 17 June 2005 - 09:21 AM
แต่ทำไมพอผมทดลองตามตัวอย่างแล้ว ผมก็ยังไม่ได้อยู่ดีอ่ะครับ
#12
Posted 18 June 2005 - 11:07 PM
แต่ถ้าต้องการแค่ เวลา user จิ้มแล้ว รอ... หน้าใหม่โหลดมา แล้วเค้ากด refresh
แบบนี้ใช้หลักการ redirect after post ดีกว่าครับ
ผมไม่รู้ว่าใน struts ได้รองรับวิธีนี้ไว้แล้วหรือไม่
แนะนำให้ลองหาคำว่า "redirect after post" ใน google ดูครับ
ข้อดีของวิธีนี้ก็คือ ทำง่าย
ส่วนข้อเสียคือ ป้องกันการจิ้มรัวไม่ได้ และข้อมูลใน request ล่าสุดหายไป เพราะการ redirect ครั้งหลังจะเป็นคนละ request กับครั้งแรก
#13
Posted 19 June 2005 - 12:56 AM
tennessee, on Jun 18 2005, 10:07 AM, said:
<{POST_SNAPBACK}>
ผมเห็นเวปเค้าป้องกันการจิ้มรัว โดยการ disable ปุ่ม submit หลังจากปุ่มนี้ถูกกดครับ

Help













