2010-10-25 39 views
13

tôi thực hiện logic xác nhận của tôi như sau:Là phía máy khách xác thực JSF hay phía máy chủ?

 <h:inputText id="title" value="#{...}" 
      required="true" requiredMessage="...some..text..." 
      validatorMessage="...some..other..text..." > 
      <f:validateLength minimum="10" maximum="50"/> 
     </h:inputText> 

Tôi đọc rất nhiều về clientside và xác nhận serverside và về ưu và nhược điểm của họ. Nhưng tôi không có ý tưởng về những gì các mã trên không.

ai đó có thể vui lòng giải thích rằng :-)

Cheers

Trả lời

29

Trong xác nhận phía khách hàng, đó là khách hàng (webbrowser) mà xác nhận đầu vào với sự giúp đỡ của một ngôn ngữ phía khách hàng, ví dụ JavaScript. Trong xác thực phía máy chủ, đó là máy chủ (máy chủ web) xác thực đầu vào với sự trợ giúp của ngôn ngữ phía máy chủ, ví dụ: Java.

Bạn không bao giờ nên làm chỉ xác thực phía khách hàng, vì kết quả có thể kiểm soát được (và do đó cũng có thể tấn công/giả mạo) bởi người dùng cuối. Thông thường, bạn muốn sử dụng xác thực phía máy khách vì nó cung cấp phản hồi sớm hơn nhiều. Người kết thúc không cần phải chờ đợi cho việc gửi biểu mẫu được hoàn thành và không cần phải đối mặt với "flash nội dung" (trang trống ra và sau đó hiển thị lại với nội dung mới). Bạn muốn sử dụng xác thực phía máy chủ để đảm bảo tính toàn vẹn của dữ liệu được gửi. Người dùng cuối không có cách nào kiểm soát kết quả của việc xác thực phía máy chủ.

Trong trường hợp của JSF, xác thực là luôn là phía máy chủ. Vì JSF 2.0 có thể gửi một biểu mẫu (và do đó cũng xác nhận biểu mẫu) bằng cách sử dụng chức năng ajaxical được xây dựng sẵn. Điều này kết hợp tốt nhất trong hai thế giới: có phản hồi tức thì mà không có flash nội dung và tính chắc chắn/toàn vẹn của xác thực phía máy chủ.

+0

Cảm ơn bạn vì những lời khôn ngoan này. Bạn có thể xin vui lòng cho tôi một liên kết (hoặc một ví dụ) làm thế nào để bao gồm ajax vào mã của tôi :-) đó sẽ là tuyệt vời :-) ... hoặc là nó chỉ đơn giản là đôi khi bối rối thẻ? – Sven

+1

Có, 'f: ajax' là một cách để giới thiệu javascript/AJAX cho mã của bạn. Để tìm hiểu cách bắt đầu sử dụng, hãy xem câu hỏi có liên quan: http://stackoverflow.com/questions/3138488/how-to-use-ajax-with-jsf-2-0 –

+2

@Sven: đặt ' 'bên trong thành phần' UICommand'. Hoặc nếu bạn muốn xác nhận tính năng làm mờ của mỗi phần tử đầu vào, hãy đặt '' vào trong mỗi thành phần 'UIInput'. – BalusC

Các vấn đề liên quan