Cách tốt nhất để thực hiện xác thực biểu mẫu phía máy khách bằng cách sử dụng Javascript (sao chép mã tối thiểu) khi sử dụng xác thực bean JSR 303 ở phía máy chủ là gì? Tôi hiện đang sử dụng Spring 3 và Hibernate Validator.Xác nhận hợp lệ JSR 303 + Xác thực phía máy khách Javascript
Trả lời
Tôi khuyên bạn nên xem Spring JS, dựa chủ yếu vào Dojo. Một hướng dẫn có thể được tìm thấy here.
Cách dễ nhất để bắt đầu chơi với nó là tải xuống Spring Roo, tạo ứng dụng mẫu petclinic với một trong các kịch bản mẫu (điều này sẽ đưa bạn 5 phút) và sau đó chơi xung quanh cách tích hợp javascript. Spring Roo tạo một ứng dụng với cùng một ngăn xếp công nghệ mà bạn sử dụng (Spring + hibernate + implementation of jsr 303)
Tôi tìm thấy dự án mã nguồn mở này nhưng có vẻ đã chết, có thể nó đáng sống lại.
http://kenai.com/projects/jsr303js/pages/Home
Thư viện này cung cấp khách hàng xác nhận bên của một hình thức HTML dựa trên JSR-303 và Hibernate Validator chú thích, tích hợp với Spring MVC. Thư viện cung cấp một cơ sở mã xác nhận JavaScript xử lý tương tác cơ bản với các biểu mẫu HTML, cũng như các hàm JavaScript thực hiện các chú thích xác nhận được hỗ trợ bởi Hibernate Validator (bao gồm cả các thông số không phải từ thông số JSR-303). Cơ sở mã JavaScript này có thể được bao gồm trong một trang bằng cách sử dụng thẻ tag được cung cấp hoặc bằng cách trích xuất tệp JavaScript từ bình và bao gồm nó bằng cách sử dụng thẻ. Khi cơ sở mã này đã được đưa vào một trang, thẻ taglib thứ hai được sử dụng để tạo mã JavaScript để xác thực biểu mẫu HTML. Bạn cũng có thể cung cấp một đối tượng JSON trong phần thân của thẻ để chỉ định thêm thông tin cấu hình.
Chắc chắn sẽ kiểm tra điều này. Thiết lập xác nhận hợp lệ trên bean và việc nó được tự động sao chép trên máy khách là cách để đi – Erich
Richfaces hỗ trợ điều này. Họ có một small demo on their site.
Đây là cách tôi đang làm nó bằng cách sử Spring MVC + JQuery + Bootstrap, một phần dựa trên a recent blog post at SpringSource:
AddressController.java
@RequestMapping(value="/validate")
public @ResponseBody ValidationResponse processForm(Model model, @Valid AddressForm addressForm, BindingResult result) {
ValidationResponse res = new ValidationResponse();
if (result.hasErrors()) {
res.setStatus("FAIL");
for (ObjectError error : result.getAllErrors()) {
if (error instanceof FieldError) {
FieldError fieldError = (FieldError) error;
res.addError(fieldError.getField(), fieldError.getDefaultMessage());
}
}
}
else {
res.setStatus("SUCCESS");
}
return res;
}
AddressForm.java
public class AddressForm {
@NotNull
@Size(min=1, max=50, message="Address 1 is required and cannot be longer than {max} characters")
private String address1;
@Size(max=50, message="Address 2 cannot be longer than {max} characters")
private String address2;
// etc
}
ValidationResponse.java :
public class ValidationResponse {
private String status;
private Map<String,String> errors;
// getters, setters
}
address.jsp:
<f:form commandName="addressForm">
<div class="control-group">
<label for="address1">Address 1</label>
<div class="controls">
<f:input path="address1" type="text" placeholder="Placeholder Address 1" class="wpa-valid" />
<span class="help-inline"></span>
</div>
</div>
<!-- etc -->
<div class="form-actions">
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn">Cancel</button>
</div>
</f:form>
<script type="text/javascript">
function collectFormData($fields) {
var data = {};
for (var i = 0; i < $fields.length; i++) {
var item = $($fields[i]);
data[item.attr("id")] = item.val();
}
return data;
}
function clearErrors($fields) {
for (var i = 0; i < $fields.length; i++) {
var item = $($fields[i]);
$("#"+item.attr("id")).parents(".control-group").removeClass("error");
$("#"+item.attr("id")).siblings(".help-inline").html("");
}
}
function markErrors(errors) {
$.each(errors, function(key, val) {
$("#"+key).parents(".control-group").addClass("error");
$("#"+key).siblings(".help-inline").html(val);
});
}
$(document).ready(function() {
var $form = $("form.validate");
$form.bind("submit", function(e) {
var $fields = $form.find(".validate");
clearErrors($fields);
var data = collectFormData($fields);
var validationUrl = "validate";
$.get(validationUrl, data, function(response) {
$("#alert").removeClass();
if (response.status == "FAIL") {
markErrors(response.errors);
$("#alert").addClass("alert alert-error");
$("#alert").html("Correct the errors below and resubmit.");
} else {
$("#alert").addClass("alert alert-success");
$("#alert").html("Success!");
$form.unbind("submit");
$form.submit();
}
}, "json");
e.preventDefault();
return false;
});
});
</script>
Nó có thể sử dụng một số cấu trúc lại, nhưng điều này sẽ làm một ajax GET với dữ liệu mẫu và cập nhật trang dựa trên kết quả.
Khung xác thực phía khách hàng PrimeFaces hỗ trợ xác thực bean.
- 1. Tạo xác nhận hợp lệ phía máy khách và phía máy chủ trong Symfony2
- 2. Phương thức xác thực tham số với JSR-303
- 3. Sử dụng trình xác thực JSR-303 thay vì Trình xác thực Spring
- 4. asp.net mvc phía khách hàng xác nhận
- 5. Xác thực phía máy khách tùy chỉnh ASP.Net
- 6. JSR 303 Validation Override
- 7. Xác nhận hợp lệ ứng dụng khách với WebApi
- 8. RegisterOnSubmitStatement sau khi xác thực phía máy khách
- 9. Thực hiện xác thực Facebook: Phía máy khách và phía máy chủ
- 10. ASP.Net 4.5 Twitter Bootstrap và Xác thực Phía Máy khách
- 11. Xác thực phía khách hàng của Grails
- 12. Xác thực phía máy chủ Breeze
- 13. ASP.NET: Đồng bộ hóa quy tắc xác thực phía máy khách và phía máy chủ
- 14. Tại sao xác thực phía máy khách là một nguy cơ bảo mật thay vì xác thực phía máy chủ?
- 15. Là phía máy khách xác thực JSF hay phía máy chủ?
- 16. Cách xác nhận đăng nhập ứng dụng Facebook phía máy khách từ phía máy chủ
- 17. Xác thực nhập của người dùng, phía máy khách hoặc phía máy chủ? [PHP/JS]
- 18. JSF 2.0: Làm cách nào để bỏ qua xác thực bean JSR-303?
- 19. tôi có thể ghi đè lên một JSR-303 xác nhận chú thích
- 20. Thay đổi thông báo lỗi cho trình xác thực tùy chỉnh ASP.NET bằng javascript (xác thực phía máy khách)?
- 21. Xác thực người dùng G + ở phía máy chủ, sau khi đăng nhập phía máy khách
- 22. Cách xác thực biểu mẫu Symfony 2 ở phía máy khách (javascript)
- 23. cách xác thực kích thước tệp bằng HTML và Javascript ở phía máy khách
- 24. Tích hợp xác thực phía ứng dụng
- 25. MVC 3 - kiểm tra xem biểu mẫu có hợp lệ không (đã thông qua xác thực phía máy khách)
- 26. xác thực thông thạo khi ở phía khách hàng
- 27. Xác thực phía máy chủ với tùy chỉnh DataAnnotationsModelValidatorProvider
- 28. ASP.Net MVC 3 Ràng buộc mô hình JSON và xác thực mô hình phía máy chủ được trộn lẫn với xác thực phía máy khách
- 29. Làm thế nào tôi có thể nhận được xác nhận hợp lệ jQuery để tạo ra đánh dấu giống như xác thực ASP .NET MVC phía máy chủ?
- 30. Xác thực phía máy chủ Backbone.js và các lỗi phía máy chủ khác
+1 đẹp hướng dẫn nhờ – stacker