ajax를 통해 폼을 게시하고 playframework java에서 폼 오브젝트를 가져옵니다.
저는 play framework 2.3.8 java를 사용하고 있고 ajax를 사용하여 양식을 제출하고 있지만 해당 요청에서 양식 객체를 얻을 수 없습니다.저의 문제는 아래에 설명되어 있습니다.나는 모델이 있습니다.
@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
}
나의 형
<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;
});
ajax 없이 폼을 제출할 때 모델 Object에 데이터를 요청하는 bind를 재생하면 Form object를 다음과 같이 얻을 수 있습니다.
Form<Permission> permissionFormData = Form.form(Permission.class).bindFromRequest();
그리고 우리는 물건을 얻을 수 있습니다.permissionFormData.get()요청은 ajax가 있는 포스트폼과 ajax가 없는 포스트폼에 대해 동일하기 때문에 ajax의 경우 동일한 작업을 수행하고 있지만 엔티티 멤버를 가져오려고 하면 No Value 예외가 발생했습니다.
Logger.info("---Permission one is "+permissionFormData.get().getPer1());
내가 여기서 뭘 잘못하고 있는 거지?그리고 아약스를 사용하는 동안 플레이 중인 형태에서 객체를 얻는 다른 방법이 있습니까?저는 JSON 대신 여기에 오브젝트를 원합니다. 왜냐하면 저는 JSON으로 오브젝트를 지속적으로 유지해왔기 때문입니다. 저는 모든 키 값을 반복해서 오브젝트를 만들어야 하기 때문입니다.
편집: 단순히 ajax를 시도하면 동일한 예외가 발생합니다.
$("#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;
});
현재 사용하고 있는 접근 방식은 axis 요청에서 JSON을 전달하는 것이며, 컨트롤러에서 전달하는 것입니다.Json.fromJson()entity object에서 JSON을 변환하는데 왜 AJAX request가 일반 폼 submit과 다르게 동작하는지 알고 싶습니다. 두 요청이 동일한 유형인데도 entity를 요청에서 얻을 수 없는 이유입니다.
미리 감사드립니다.
1단계: 모든 개인 속성의 이름을 공용으로 바꾸고 getter 및 setter 메서드를 제거합니다.
private String per1= "off"; to public String per1= "off";
2단계. 다음 단계를 확인합니다.
route파일은 a.GET부탁한다3단계. 기본 Jquery ajax를 사용하여 테스트해 봅니다.
$("#form-permission").on('submit', function() {
var $this = $(this);
$.ajax({
url: '/url/to/controller',
data: $this.serialize(),
type: 'GET'
});
return false;
});
언제든지 편리한 시간에 GET에서 POST로 변경할 수 있습니다. JQuery와 html 폼 메소드를 POST 값으로 변경하고 Playframework routes 파일도 POST로 변경할 수 있도록 해주세요.
잘 됐으면 좋겠네요!
서버 쪽에서 Json 대신 객체를 원하는 다른 접근 방식은 --
언제든지 디시리얼화할 수 있습니다.gson과 fasterxml json과 같은 도구들이 있고 당신이 알아봐야 할 것들이 있습니다.이렇게 하면 지속적으로 유지하고자 하는 엔티티를 만드는 데 추가적인 노력을 들일 수 없습니다.
HTH.
언급URL : https://stackoverflow.com/questions/32044257/post-form-via-ajax-and-get-a-form-object-in-play-framework-java
'codememo' 카테고리의 다른 글
| 시작 작업의 매개 변수 중 하나로 스크립트 블록을 전달하려면 어떻게 해야 합니까? (0) | 2023.09.25 |
|---|---|
| 구조물에서 작은 값을 표현하는 가장 효율적인 방법은 무엇입니까? (0) | 2023.09.25 |
| jQuery 플러그인 구문을 이해하고 싶습니다. (0) | 2023.09.25 |
| iOS 앱에서 L2TP 프로토콜로 VPN 구현 (0) | 2023.09.25 |
| 네이티브 워드프레스 검색 결과에 저자(사용자)를 포함시키는 방법은? (0) | 2023.09.25 |