2011-07-07 37 views
16

Có API/thư viện xác thực biểu mẫu trưởng thành nào cho Android không? Tôi đã tìm thấy http://code.google.com/p/android-binding/ nhưng có vẻ như đó là dưới sự phát triển nặng nề.Thư viện xác thực biểu mẫu dành cho Android?

CẬP NHẬT: Chỉ cần làm rõ câu hỏi của tôi. Hiện tại, tôi đã xác nhận hợp lệ biểu mẫu mã hóa. Và tôi muốn biết, nếu có thư viện xác thực biểu mẫu trưởng thành cho phép tôi xác định rõ ràng trình xác thực (ví dụ: trực tiếp trong XML hoặc trong mã bằng chú thích hoặc theo cách thông thạo, ...).

Trả lời

19

Thư viện hiện hỗ trợ chú thích, bạn có thể xác thực các trường của mình bằng cách thêm chúng. Đây là đoạn mã mẫu.

@NotEmpty 
@Order(1) 
private EditText fieldEditText; 

@Checked(message = "You must agree to the terms.") 
@Order(2) 
private CheckBox iAgreeCheckBox; 

@Length(min = 3, message = "Enter atleast 3 characters.") 
@Pattern(regex = "[A-Za-z]+", message = "Should contain only alphabets") 
@Order(3) 
private TextView regexTextView; 

@Password 
@Order(4) 
private EditText passwordEditText; 

@ConfirmPassword 
@Order(5) 
private EditText confirmPasswordEditText; 

Chú thích thứ tự là tùy chọn và chỉ định thứ tự các trường cần được xác thực. Điều này chỉ được yêu cầu nếu bạn muốn thứ tự của các trường được giữ nguyên trong quá trình xác nhận. Ngoài ra còn có chú thích khác như @Email, @IpAddress, @Isbn, vv

Android Studio/Gradle

compile 'com.mobsandgeeks:android-saripaar:2.0.2' 

Kiểm tra phiên bản mới nhất hiện có.

Eclipse
Bạn có thể tải jar từ here và thêm nó vào thư mục Android libs của bạn.

Câu trả lời cũ (Saripaar v1)
Tôi đã tạo thư viện để xác thực. Dưới đây là associated blogproject. Tôi đã sử dụng thành công nó trong các ứng dụng sản xuất và nó hiện đang đáp ứng hầu hết các tình huống phổ biến mà chúng ta phải đối mặt trong các hình thức xác nhận cho Android. Có những quy tắc đi ra khỏi hộp và nếu bạn cần phải viết của riêng bạn, bạn có thể làm điều đó bằng cách viết Quy tắc của riêng bạn.

Đây là đoạn trích minh họa cách sử dụng thư viện.

validator.put(nameEditText, Rules.required("Name is required.")); 
validator.put(nameEditText, Rules.minLength("Name is too short.", 3)); 
validator.put(emailEditText, Rules.regex("Email id is invalid.", Rules.REGEX_EMAIL, trim)); 
validator.put(confirmPwdEditText, Rules.eq("Passwords don\'t match.", pwdEditText); 

Ngoài ra còn có orand quy tắc cho phép bạn thực hiện &&|| hoạt động trên một số quy tắc. Ngoài ra còn có quy tắc compositeOrcompositeAnd cho phép bạn thực hiện xác thực giữa nhiều Chế độ xem.

Nếu có vẻ như không đủ, bạn luôn có thể viết quy tắc của riêng mình bằng cách mở rộng lớp Rule.

+0

+1 Cảm ơn bạn đã cung cấp thông tin. Có bất kỳ chứng nhận ValidatorListeners nào có thể, ví dụ: làm nổi bật các hộp nhập liệu lỗi, v.v ...? –

+0

Bạn sẽ nhận được failedView và failedRule trong cuộc gọi lại onFailure. Nếu bạn muốn làm nổi bật các trường EditText, bạn luôn có thể gọi phương thức setError() hoặc requestFocus(). Quy tắc không thành công sẽ có thông báo lỗi khi bạn có thể nhận được bằng cách gọi hàm failedRule.getFailureMessage(). –

+0

Bạn có đang lên kế hoạch cho bất kỳ phần mở rộng khai báo nào không? (Điều đó có thể được áp dụng và bạn không cần mã hóa nó mỗi lần.) –

0

Nếu bạn muốn xác thực trường văn bản (EditText) thì tôi sẽ đề nghị bạn sử dụng Pattern và Matcher với biểu thức regex, ofcourse chúng tôi không sử dụng API android ở đây nhưng hỗ trợ Android API java do đó bạn có thể.

+0

Bạn đề xuất tạo thư viện xác thực của riêng mình, nhưng câu hỏi của tôi là có bất kỳ thư viện nào đã tồn tại. –

+0

đây chỉ là cách trưởng thành để làm như tôi nghĩ vậy .... –

0

Sử dụng một trong hai

android.widget.AutoCompleteTextView.Validator; 
myTextview.setValidator(myCustomValidator); 

hoặc myTextView.setError(error-message) trong một onTextChangedListener hoạt động tốt và điều thứ hai trông thật sự tuyệt vời.

+0

Xem cập nhật. (Tôi đã cập nhật câu hỏi để rõ ràng hơn.) –

0

Đây sẽ là cách đơn giản và trưởng thành để xác nhận các văn bản đầu vào hoặc các hình thức:

private EditText et_first_name; 
et_first_name = (EditText)findViewById(R.id.et_first_name); 
et_first_name = (EditText)findViewById(R.id.et_first_name); 
first_name.matches("^(?i)(?=.{1,20}$)([A-Za-z]+[A-Za-z0-9-_.]*$)"); // use the regex expression inside brackets and returns the error status . 
+0

Nhưng đây không phải là cách khai báo xác định người xác nhận. (Hiện tại, tôi đã mã hóa nó như bạn gợi ý, nhưng tôi đang tìm kiếm một cách tốt hơn.) –

3

Tôi muốn giới thiệu OVal

public class BusinessObject { 

@NotNull 
@NotEmpty 
@Length(max=32) 
private String name; 

... 
} 

// collect the constraint violations 
List<ConstraintViolation> violations = validator.validate(bo); 

Tôi đang bào để sử dụng nó trong dự án tiếp theo của tôi kể từ khi có nhiều ngôn ngữ biểu thức, nhưng chỉ yêu cầu Java.

Nó không phải là JSR303 compilant, nhưng cũng hỗ trợ các chú thích đó.

+0

Bạn có biết bất kỳ ràng buộc giao diện người dùng Android nào cho thư viện đó không? –

+0

Tôi đoán bạn phải liên kết nó theo cách thủ công, nhưng tôi nghĩ Trình xác thực sẽ hoạt động trên bất kỳ lớp nào như Biểu mẫu hoặc Hộp thoại, vì bạn có thể hủy bất kỳ phương thức nào bạn tạo hoặc ghi đè. – kromit

+0

Tôi đang tìm kiếm thứ gì đó cũng giúp với giao diện người dùng, nhưng cảm ơn bạn đã gợi ý +1. –

0

Sử dụng Oval thư viện để xác nhận trong android Nó được đối tượng dựa thư viện xác nhận sử dụng trong lớp Object

0

kể từ khi tôi đã chiến đấu với những vấn đề như trên của riêng tôi, tôi đã thêm chức năng này vào các chức năng cốt lõi của khung ứng dụng BARACUS tôi. Xem http://baracusframework.blogspot.de/2014/01/baracus-from-scratch-part-6-automatic.html để biết chi tiết.

Khái niệm bao gồm ràng buộc khai báo của trình xác thực có tên trong biểu mẫu cộng với định tuyến tự động của bất kỳ thông báo vi phạm ràng buộc nào.

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