我正在尝试在Job中生成PDF而不是在控制器中创建它,因为它需要时间。我正在使用如下所示的PDF生成代码。这是Play框架提供的标准功能。
PDF.writePDF(file,"test.html",data, options);
现在当我运行它时,我得到Null指针异常。我在Play框架PDF模块源代码中调试了这个问题。下面是空指针来的行,因为它试图访问请求对象,但是因为我从Job调用了代码而不是来自Controller,所以请求为空。
public static void writePDF(OutputStream out, Object... args) {
final Http.Request request = Http.Request.current();
final String format = request.format;
是否有其他方法可以实现此功能。
答案 0 :(得分:1)
Request类的代码显示当前变量是公共的,并且它存储在ThreadLocal中。然后,您应该能够在作业开始时设置自己的Request对象。使用以下代码创建自己的Request对象。
Http.Request request = Http.Request.createRequest(...);
Http.Request.current.set(request);