1

我正在使用带有 Java 的 playframework 2.2.0。如何从我的控制器操作中返回 Not Modified?

Controller 超类中有几个方法:ok()、noContent() 等,但不是 notModified()。

查看 play 的源代码,我可以看到:

val NotModified = SimpleResult(header = ResponseHeader(NOT_MODIFIED), body = Enumerator.empty,
connection = HttpConnection.KeepAlive)

在 play.api.mvc.Results 中。但是如何将 SimpleResult 包装在 Java 控制器可以返回的东西中?

该方法想要返回一个结果:

public interface Result {
    scala.concurrent.Future<play.api.mvc.SimpleResult> getWrappedResult();
}

但我不知道如何从 Java 生成 Future。(我尝试使用 scala.concurrent.Future$.MODULE$... 但它对我的 java 代码不可见)

4

1 回答 1

1

而不是像ok()这样的东西,试试这个:

return status(304, "Content not modified, dude.");

参考: http ://www.playframework.com/documentation/2.2.0/JavaActions

看起来像 play.api.mvc.Results,在 Scala API 中,实际上有一个 NotModified 生成器,但 Java API 没有。如果您使用 Java API,则不能使用 Scala API 中的任何内容。似乎 Java API 是 Play Framework 的不受欢迎的孩子。

总之,返回状态 304 比尝试从 Play Scala API 中拖入组件并从 Java 中使用它们要简单得多。HTTP 响应代码 304 = 内容未修改。

请参阅此处的代码列表:http: //www.w3.org/Protocols/HTTP/HTRESP.html

于 2013-10-26T22:59:02.513 回答