3

Click here to load reader

Xu Ly Nhieu Nut HTML Trong Struts

Embed Size (px)

Citation preview

Page 1: Xu Ly Nhieu Nut HTML Trong Struts

Xử lý nhiều nút trong HTML Form trong Struts

Written By DangTrung on 07-01-2009 | 15:02

Các tag <html:submit> được sử dụng để gửi Form HTML. Việc sử dụng trong thẻ là như sau:

<html:submit> <bean:message key="button.save"/> </ html:submit>

Nó sẽ tạo một HTML như sau.

<input type="submit" value="Save Me">

Điều này thường làm việc ổn nếu chỉ có một nút có submission Form "real" (có thể là một nút khác là Cancel ). Do đó nó phải để ngay lập tức xử lý yêu cầu trong CustomerAction. Tuy nhiên bạn sẽ thường xuyên phải đối mặt với tình huống mà có nhiều hơn một hoặc hai nút submit form. Bạn sẽ muốn thực thi code khác nhau dựa trên những nút bấm. Nếu bạn đang nghĩ, "Không có vấn đề. Tôi sẽ có ActionMapping khác nhau (và Actions vì thế khác nhau) cho các nút khác nhau ", bạn đang trên may mắn! Nhấp vào bất kỳ nút trong một Form HTML luôn nộp Form giống nhau, có cùng một URL. Các URL Form trình được tìm thấy trong những thuộc tính hành động của thẻ Form như:

<form name="CustomForm" action="/example/submitPersonForm.do"/>

và là duy nhất cho Form. Bạn phải sử dụng một biến thể của như hình dưới đây để giải quyết vấn đề này.

<html:submit property="step">      <bean:message key="button.save"/></html:submit>

SubmitTag trên, có một thuộc tính bổ sung tên là tài sản có giá trị bước. Ý nghĩa trong những thuộc tính tài sản là tương tự như trong <html:text> - Nó đại diện cho một tài sản JavaBeans trong ActionForm và tạo ra tên trong những yếu tố đầu vào Form. Thẻ này sẽ tạo ra một HTML như sau

<input type="submit" name="step" value="Save Me"></html:submit>

HTML sinh ra nút gửi có một cái tên gắn liền với nó. Bây giờ bạn cần phải thêm một JavaBeans properties cho ActionForm của bạn có tên trùng với tên nút submit. Nói cách khác một biến có một method getter và setter được yêu cầu.

Trong các ứng dụng Struts, khi sử dụng các nút thường xuyên, đó là tập quán cho tất cả các nút submit có cùng tên (trừ Cancel và nút Reset). Điều này là dành cho mục đích thuận tiện. Trong HTML, khi tạo thành một điểm được gửi, chỉ có một trong các nút submit được nhấn và do đó chỉ có giá trị trong nút đó là được gửi. Các ActionForm đó có thể có một biến trường hợp duy nhất cho tất cả những submit nút trong Form của mình. Điều này làm cho những kiểm tra xem

Page 2: Xu Ly Nhieu Nut HTML Trong Struts

trong class Action dễ dàng hơn. Giả sử rằng những HTML Form khách hàng mà chúng ta hiển thị cho người sử dụng có một nút có nhãn "Spike Me". Các nút trình vẫn có thể có tên "bước" (giống như là nút "Save Me"). Điều này có nghĩa những class CustomerForm códuy nhất JavaBeans tài sản "bước" cho những trình nút. Trong CustomerAction những bạn có thể có kiểm tra xem những personForm.getStep() là "Save Me" hay "Spike Me". Nếu mỗi người trong những nút có tên gọi khác nhau như button1, button2 vv thì PersonAction sẽ phải thực hiện kiểm tra như sau:

if ("Save Me".equals (personForm.getButton1()) {       //Save Me} else if ("Spike Me".equals(personForm.getButton2()) {       //Spike Me}

Sử dụng HTML Button Label để phân biệt những nút làm việc cho hầu hết các trường hợp, trừ khi bạn có một ứng dụng Struts web internationalized. Xem xét kết xuất HTML cho một người sử dụng tiếng Tây Ban Nha. Bởi đức hạnh trong những tin nhắn Resource Gói (<bean:message> tag), người sử dụng tiếng Tây Ban Nha sẽ nhìn thấy một nhãn hiệu trong "Excepto Mi" thay vì "Save Me". Tuy nhiên những class CustomerAction vẫn còn tìm kiếm những mã hoá "Save Me".