Tôi đang sử dụng khung chơi 2.3.8 java và sử dụng ajax để gửi biểu mẫu nhưng tôi không thể lấy đối tượng Biểu mẫu từ yêu cầu đó. phía dưới. Tôi có một mô hìnhGửi biểu mẫu qua ajax và nhận đối tượng biểu mẫu trong khung chơi java
@Entity
public class Permission {
@Id
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String per1= "off";
private String per2= "off";
// getter setters
}
hình thức của tôi
<form id="form-permission">
<!--Setting "on" and "of" value from js-->
<input type="checkbox" id="per1" name="per1">
<input type="checkbox" id="per2" name="per2">
<input type="submit" >
</form>
$('#form-permission').on('submit',function(){
var uid=// id to update
myJsRoutes.controllers.MyController.updatePer(uid).ajax({
data : $("#form-permission").serialize(),
success : function(data) {
console.log(data);
});
return false;
});
Khi gửi mẫu mà không ajax sau đó chơi với phím tắt mà yêu cầu dữ liệu để mô hình đối tượng và chúng tôi có thể nhận được đối tượng Form như
Form<Permission> permissionFormData = Form.form(Permission.class).bindFromRequest();
và chúng tôi có thể lấy đối tượng theo số permissionFormData.get()
vì yêu cầu giống nhau cho biểu mẫu bài đăng với ajax và withou t ajax Trong trường hợp của ajax tôi đang làm điều tương tự nhưng khi tôi cố gắng để có được các thành viên Entity từ nó đã cho tôi một Không Giá trị ngoại lệ với
Logger.info("---Permission one is "+permissionFormData.get().getPer1());
Tôi đang làm gì sai ở đây? Và có bất kỳ các cách tiếp cận khác để nhận một đối tượng từ biểu mẫu trong khi sử dụng ajax.I muốn đối tượng ở đây thay vì JSON vì cuối cùng tôi đã tiếp tục tồn tại đối tượng với JSON, tôi phải lặp lại tất cả giá trị khóa của nó và tạo một đối tượng.
EDIT: khi tôi cố gắng đơn giản ajax nó đã cho tôi cùng một ngoại lệ
$("#form-permission").on('submit', function() {
var $this = $(this);
var uid=//some uid
$.ajax({
url: '/account/permission?id='+uid,
data: $this.serialize(),
type: 'POST'
});
return false;
});
Cách tiếp cận Tôi hiện đang sử dụng là đi qua một JSON từ yêu cầu ajax và trong điều khiển của tôi, tôi làm Json.fromJson()
để chuyển đổi JSON từ đối tượng thực thể nhưng tôi chỉ muốn biết tại sao yêu cầu AJAX hoạt động khác với cách gửi biểu mẫu bình thường, nghĩa là tại sao tôi không thể nhận thực thể từ yêu cầu khi cả hai yêu cầu cùng loại.
Xin cảm ơn trước.
Bạn có thấy tất cả các giá trị chính xác được POSTED với Ajax không? Bạn có thể kiểm tra điều này bằng các công cụ của Nhà phát triển web, như trong Chrome ... – adis
@adis yes Tôi đã kiểm tra biến 'per1' và tôi có thể thấy nó được chuyển từ yêu cầu trong phần tử kiểm tra chrome – codegasmer
Từ bảng điều khiển" Mạng "trong công cụ dev ? Đối với Firefox, đó là bảng điều khiển Net. Nó sẽ cho bạn thấy sự khác biệt, nếu có một sự lựa chọn giữa AJAX và html của bạn. Bạn nói bạn có giá trị biến per1. Bất kỳ sự khác biệt nào khác? Bất kỳ tiêu đề nào? Bạn nên mở rộng các yêu cầu được đăng lên bộ điều khiển của mình và sau đó so sánh cả hai yêu cầu. – Gyan