java PrimeFaces 8.0 DefaultStreamedContent。生成器()。stream()要求SerializableSupplier<InputStream>
在PrimeFaces 8.0中,DefaultStreamedContent
不能像new DefaultStreamedContent(inputStream, contentType, name)
那样初始化,因为它已被弃用,您应该使用DefaultStreamedContent.builder()
尽管在执行.stream()
时,它要求使用SerializableSupplier<InputStream>
,而不是像8.0之前版本中的InputStream
DefaultStreamedContent.builder().contentType(contentType).name(name).stream(is).build();
^^
如何将InputStream
转换为SerializableSupplier
# 1 楼答案
上面@tandraschko给出的惰性初始化答案在使用Java8的Netbeans中不适用。我必须先创建FileInputStream,然后再将其注入构建器
所以我的代码看起来像:
我想我会发表评论,以防其他人遇到编译问题
# 2 楼答案
对于MySQL存储的图像,我使用以下方法:
# 3 楼答案
这对我有用
# 4 楼答案
所有内容都在这里的迁移指南中:https://github.com/primefaces/primefaces/wiki/Migration-Guide
一般来说,以下几点会起作用:
但这一变化背后的理念是不同的
如果使用RequestScope bean构建StreamedContent,那么将创建两次您的bean,从而创建StreamedContent:
在这种情况下,您的
is
可能会被创建两次。大多数情况下,这会导致1次无用的IO访问或DB调用要只创建
is
一次,您应该通过供应商lambda延迟初始化它: