【问题标题】:invalid characters in JSON message after using await/job in play framework 1.2.5在播放框架 1.2.5 中使用 await/job 后 JSON 消息中的无效字符
【发布时间】:2013-05-28 19:57:06
【问题描述】:

我正在使用 play framework 1.2.5 作业 - 在等待之后,我以 JSON 格式向 Web UI 发送消息。不使用作业时,相同的 JSON 逻辑可以正常工作 - 但是,在使用作业和等待之后,JSON 消息似乎包含无效字符(客户端 javascript 不再将其识别为有效 JSON)。浏览器不会呈现乱码/无效字符 - 我将尝试使用 wireshark 看看是否可以添加更多详细信息。关于可能导致这种情况以及如何最好地防止这种情况的任何想法?在此先感谢(我有理由确定是我的代码导致了问题,因为我不能成为第一个这样做的人)。我还将尝试使用 executors/futures 而不是玩工作进行测试,看看效果如何。

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

更新:我正在使用 gson & JDK1.6

更新似乎每次使用playjobs和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"); 

【问题讨论】:

  • 贴出TestMessage类的代码
  • @Tom - 已添加。在不使用作业时工作,但在使用作业时,utf-8 受到影响,或者看起来如此

标签: playframework-1.x


【解决方案1】:

听起来这可能是一个错误。它可能与您的模板有关 - 它是否明确指定了编码?

响应格式是什么?您可以通过使用 chrome 中的检查器或 Firefox 中的 Web 控制台来确定这一点。

(虽然我当然同意行为应该是一致的 - 可能值得在这里提交一个错误:http://play.lighthouseapp.com/projects/57987-play-framework/tickets

【讨论】:

  • 谢谢 - 我正在删除工作并重试。客户端消息乱码(一般是utf-8转换/影响时)
【解决方案2】:

这是一种解决方法;首先重置输出流然后渲染。

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

【讨论】:

    【解决方案3】:

    我能够将futures & callables 与executors 一起使用,并且与上面提到的代码相同(使用play 1.2.5)。唯一的区别是我没有明确使用游戏作业(因此这个问题似乎与 gson 无关)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 2014-01-28
      相关资源
      最近更新 更多