Apache Struts 2 Documentation > Home > FAQs > How can we display dynamic or static images that can be provided as an array of bytes |
To display an image represented as an array of bytes
<img src="/myWebAppContext/myAction.do" />
public class MyAction extends ActionSupport { public String doDefault() { return "myImageResult"; } public byte[] getMyImageInBytes() { .... } public String getMyContentType() { ... } public String getMyContentDisposition() { ... } public int getMyContentLength() { .... } public int getMyBufferSize() { ... } }
<struts> ... <result-types> <result-type name="myBytesResult" class="MyBytesResult" /> </result-types> ... <action name="myAction" class="MyAction"> <result name="myImageResult" type="myBytesResult"> <param name="contentType">${myContentType}</param> <param name="contentDisposition">${myContentDisposition}</param> <param name="contentLength">${myContentLength}</param> <param name="bufferSize">${myBufferSize}</param> <result> </action> ... </struts>
public class MyBytesResult implements Result { public void execute(ActionInvocation invocation) throws Exception { MyAction action = (MyAction) invocation.getAction(); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType(action.getContentType()); response.setContentLength(action.getContentLength()); response.getOutputStream().write(action.getImageInBytes()); response.getOutputStream().flush(); } }