To display an image represented as an array of bytes
- Reference an Action for the image src attribute
- Provide a helper method on the Action to return an array of bytes
- Provide a Result Type that renders the array to the response
Reference an Action
Code Block |
---|
|
<img src="/myWebAppContext/myAction.do" />
|
Provide Helper Methods
Code Block |
---|
| java |
---|
| java |
---|
title | MyAction.java |
---|
|
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() { ... }
}
|
Provide a Custom Result Type
Code Block |
---|
|
<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>
|
Code Block |
---|
| java |
---|
| java |
---|
title | MyBytesResult.java |
---|
|
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();
}
}
|