我有一个图像byte[]
,此byte[]
来自LDAP [Oracle Open LDAP身份验证提供程序],我需要将此图像显示在页面中。
我该怎么做?
我可以使用javax.faces.context.ResponseWriter
撰写byte[]
,或者我应该从java.io.OutputStream
中提取javax.faces.context.FacesContext
的实例,并将byte[]
写入页面。
如果可以使用这些方法中的任何一种,那么我可以创建自定义JSF标记,显示图像,并尝试在encodeBegin(FacesContext context, UIComponent component)
javax.faces.render.Renderer
方法中执行图像创建},byte[]
将作为属性发送。
我可以将Servlet用于此目的吗?实际上我不知道我是否可以从source
的{{1}}属性调用Servlet。
如果我得到你的建议,对我很有帮助。
感谢。
答案 0 :(得分:1)
我有一个图像byte [],这个byte []来自LDAP [Oracle Open LDAP Authentication Provider],我需要在页面中显示这个图像。
您需要在HTTP级别考虑这一点。 页面不包含图像(至少除非您要直接嵌入数据,这对于非微小图像几乎总是一个坏主意)。它包含图像的 URL 。
您应该使用适当的img
生成href
标记,这样您就可以在浏览器发出请求时获取数据。为简单起见,这几乎肯定应该是一个单独的servlet - 理想情况下响应包含“合理”文件名的请求(具有合理的图像扩展名)。
此时,您获取图像的数据并将其写入Writer
,而不是OutputStream
作为响应,因为它是二进制数据。