0

내 결과 목록의 단일 solr 문서를 Ajax에 "문서보기"보기로 보내려고합니다. AngularJS를 AJAX에 사용하여 렌더링 방식을 렌더링하고 문서를 표시하려고합니다.하지만 각도가 제대로 작동하지 않는 것처럼 보일뿐 아니라 Play 측에서 올바르게 작업하고 있는지 확신 할 수 없습니다. . 적어도 내가하려는 일이 효과가 있는지 말해 주시겠습니까? Angular 오류는 docText.text()에서 발생합니다. 요구. 여기 내 코드입니다 :

각도 컨트롤러 코드 :

var docText = $resource("http://localhost:9000/views/full-doc-text.html", { 
     text: {method: 'PUT'} 
    }); 

    $scope.handleViewText = function(value) { 
     docText.text({doc: value}); 
    } 

자바 코드 :

public static Result viewText() { 
     JsonNode json = request().body().asJson(); 

     //do stuff here 

     return ok(viewtext.render(json)); 
    } 

경로 :

GET  /views/full-doc-text.html   controllers.Application.viewText() 

답변

1

나는 위의 코드 세 가지 문제를 참조;

1. docText 리소스의 정의가 올바르지 않습니다. anglejs 설명서 here을 읽으면 $resource에는 4 개의 매개 변수가 있음을 알 수 있습니다. 첫 번째는 리소스 url이고 두 번째는 매개 변수 기본값이며, 세 번째는 사용자 지정 작업이며 네 번째는 마지막 세 개의 옵션 인 리소스 옵션입니다. 코드에서 세 번째 매개 변수로 사용자 지정 작업을 전달합니다. 그리고 리소스 url에 매개 변수가 없기 때문에 두 번째 매개 변수는 null이어야합니다. 그래서 제 1 보정은 다음과 같습니다

var docText = $resource("http://localhost:9000/views/full-doc-text.html", null, { 
    text: {method: 'PUT'} 
}); 

2.You는 당신의 경로 당신이 원하는 행동 GET 요청을 처리하는 파일 그러나에 PUTtext 행동의 HTTP 메소드를 정의합니다. 당신은 경로 정의를 변경해야하십시오 RESTFULL 서비스를 구현할 때

PUT  /views/full-doc-text.html   controllers.Application.viewText() 

3. PUT 방법은 일반적으로 업데이트 작업에 사용됩니다. 귀하의 경우에는 아무것도 업데이트하지 않는 것 같습니다. 그래서 난 그냥 POST 방법을 사용하는 것이 좋습니다.

+0

감사! 게으른 코드 중 일부는 유감스럽게 생각합니다 (주로 라우트 파일에서 수정 된 경로입니다. 여기서는 수정하지 않았습니다. POST가 실패한 후에 그냥 시도했기 때문에 PUT도있었습니다). – marcus

+0

경로를 보면 /views/full-doc-text.html은 GET 호출이어야합니다. 클라이언트 측에 full-doc-text.html 페이지를 제공 할 것이므로 " catch "포스트 메소드를 호출하여 JSON에서 아무 것도 처리하지 않고 GET 메소드를 호출하여 전체 문서 텍스트 페이지를 제공합니다. – marcus

+0

유감스럽게도 유스 케이스를 파악할 수 없습니다. 위의 코드에서 알아낼 수있는 것은 다음과 같습니다. 백엔드에 몇 가지 json 데이터를 제출하고 조작 한 다음 렌더링합니다. 이 시나리오에서 /views/full-doc-text.html 경로는 본문 (PUT 또는 POST)이있는 HTTP 메소드에 해당해야합니다. $ scope.h 및leViewText를 사용하여 데이터를 제출하기 때문에 GET 메서드가 유용하지 않습니다. 유스 케이스를 명확히 할 수 있다면 몇 가지 해결책을 제안 할 수 있습니다. 행운을 빌어 요.) – ysf