THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- 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
MyAction.jsp
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<img src="/myWebAppContext/myAction.do" /> |
Provide Helper Methods
Code Block | ||||||
---|---|---|---|---|---|---|
|
...
the action could be as follows:
{code: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 | ||||
---|---|---|---|---|
| ||||
| ||||
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(); } } |