2013-05-28 2 views
1

재생 프레임 워크 1.2.5 작업을 사용하고 있습니다. 기다린 후에 JSON 형식의 웹 UI에 메시지를 보냅니다. 작업을 사용하지 않을 때 동일한 JSON 로직이 정상적으로 작동하지만, 작업을 사용하고 기다리는 동안 JSON 메시지에 유효하지 않은 문자가 포함되어있는 것처럼 보입니다 (클라이언트 사이드 자바 스크립트는 더 이상 유효한 JSON으로 인식하지 못합니다). 브라우저가 깨진/잘못된 문자를 렌더링하지 않습니다 - 나는 wireshark를 사용하여 더 자세한 내용을 추가 할 수 있는지 봅니다. 이 문제의 원인이 될 수있는 아이디어와이를 방지하는 최선의 방법은 무엇입니까? 사전에 감사드립니다 (나는이 일을 처음 수행 할 수 없기 때문에 문제를 일으키는 코드를 합리적으로 확신합니다). 나는 또한 실업 대신에 유언 집행자/미래를 사용하여 테스트를 시도하고 이것이 어떻게 진행되는지 봅니다.재생 프레임 워크에서 await/job을 사용한 후 JSON 메시지의 문자가 잘못되었습니다. 1.2.5

Promise<String> testChk = new TestJobs(testInfo, "validateTest").now(); //TestJobs extends Job<String> & I'm overriding doJobWithResult. Also, constructor for TestJobs takes two fields (type for testInfo & String) 
String testChkResp = await(testChk); 
renderJSON(new TestMessage("fail", "failure message")); //TestMessage class has two String fields and is serializable 

업데이트 : 나는 업데이트 JDK1.6

&을 GSON 사용하고 내가 플레이 작업 및 renderJSON를 사용할 때마다 인코딩에 문제가있는 것 같다.

TestMessage는 :

수입 java.io.Serializable을 (작업을 사용하지 않을 경우 작동);

public class TestMessage { 
    public String status; 
    public String response; 

    public TestMessage() { 
    } 

    public TestMessage(String status, String response) { 
     this.status = status; 
     this.response = response; 
    } 
} 

업데이트 : 작업에 의존하면서 사용하는 경우에도 UTF-8에 미치는 영향에 다음과 같은 결과를 사용하여.

RenderJSON("test"); 
+0

TestMessage 코드 –

+0

@Tom - added에 대한 코드를 게시하십시오. 작업을 사용하지 않을 때 작동하지만 작업을 사용하는 동안 utf-8이 영향을 받거나 –

답변

0

을 1.2.5 경기). 유일한 차이점은 내가 명시 적으로 재생 작업을 사용하지 않았다는 것입니다 (따라서 gson과 관련된 것으로 보이지 않습니다).

1

소리가 버그 일 수 있습니다. 템플릿과 관련이있을 수 있습니다 - 명시 적으로 인코딩을 지정합니까?

응답 형식은 무엇입니까? Firefox의 크롬 또는 웹 콘솔에서 inspector를 사용하여이를 확인할 수 있습니다.

(I 확실히 행동이 일치해야합니다 동의하지만 - 여기에 버그 신고 가치가있을 수 있습니다 : http://play.lighthouseapp.com/projects/57987-play-framework/tickets) 내가 작품 위에서 언급 한 바와 같이 실행 프로그램과 동일한 코드와 함께 선물을 & callables을 사용할 수 있었다 (사용

+0

감사합니다. 작업을 제거하고 다시 시도하고 있습니다. 클라이언트 쪽의 메시지가 왜곡됩니다 (일반적으로 utf-8이 변환/영향을받을 때) –

1

해결 방법입니다. 먼저 출력 스트림을 재설정 한 다음 렌더링합니다.

response.reset(); 
response.contentType="application/json; charset=utf-8"; 
renderJSON("play has some bugs")