Playframework 使用Play Framework for Java,如何从控制器返回500响应?

Playframework 使用Play Framework for Java,如何从控制器返回500响应?,playframework,playframework-1.x,Playframework,Playframework 1.x,我继承了一个Play Framework v1.2应用程序,它既提供网站又提供API。API控制器的现有错误处理策略使用renderJSON(error.message)将错误返回给我们的客户端,不幸的是创建了返回200的响应 我想返回一个实际的状态代码,4xx或5xx。问题是如果我使用error(message),它会生成500响应,但是500.html错误页面会启动并返回html而不是JSON。我可以重写模板来呈现JSON,但这会影响面向客户的网页 我正在努力弄清楚如何仅为我们的API控制器

我继承了一个Play Framework v1.2应用程序,它既提供网站又提供API。API控制器的现有错误处理策略使用
renderJSON(error.message)
将错误返回给我们的客户端,不幸的是创建了返回200的响应

我想返回一个实际的状态代码,4xx或5xx。问题是如果我使用
error(message)
,它会生成500响应,但是500.html错误页面会启动并返回html而不是JSON。我可以重写模板来呈现JSON,但这会影响面向客户的网页

我正在努力弄清楚如何仅为我们的API控制器手动设置响应状态代码,以及如何呈现JSON文档


我对该框架非常陌生,并且已经看过了文档,但是对于版本1.2,我没有看到很多选项。

我不确定这是否是最好的解决方案,但是如果不处理将网站项目与API项目混合的更大问题,它似乎是最直接的解决方案

我在这里找到了Play Framework 1.2版的源代码

我能够找到
Response
的定义,并且发现status只是类中的一个字段。所以这正如我所希望的:

renderJSON("{ 'status' : 'error' }");
response.status = Http.StatusCode.INTERNAL_ERROR;