Hi,

i tried to implement a renderer with the PhaseListener.
The sandbox tag doesn't work for me. I don't know why, but an image wouldn't be 
rendered.
I think that is a problem with facelets and the sandbox tags.
I implemented all properly what i've found in the wikis, but it doesn't work 
for me.
So a Listener is my last hope...
The Listener works fine, but the image will not be rendered.
The problem is, that the hex-string is appended on the end of the UIViewRoot.
Have you any ideas what i am doing wrong?
It would be very, very , very nice. 

My Tag:
<h:graphicImage src="imagephaselistener" />

My Listener:

public class ImagePhaseListener implements PhaseListener {

    private static final Logger log = Logger
            .getLogger(ImagePhaseListener.class);

    public void setPhase(String newValue) {
    }

    public PhaseId getPhaseId() {
        return PhaseId.UPDATE_MODEL_VALUES;
    }

    public void beforePhase(PhaseEvent e) {
        log.info("BEFORE " + e.getPhaseId());
    }

    public void afterPhase(PhaseEvent e) {
        log.info("AFTER " + e.getPhaseId());
        FacesContext context = null;
        log.info("!Image will be rendered!!!");

        byte[] bytes = "FFD8FFE000104A"
                .getBytes();
        context = e.getFacesContext();
       
        HttpServletResponse response = (HttpServletResponse) context
                .getExternalContext().getResponse();
        response.setContentType("image/jpeg");
        response.setContentLength(bytes.length);
        ServletOutputStream out = null;
        try {
            out = response.getOutputStream();
        } catch (IOException e2) {
            log.error("Error at stream creation " + e2);
            e2.printStackTrace();
        }
        try {
            out.write(bytes, 0, bytes.length);
        } catch (IOException e1) {
            log.error("Error at image creation " + e1);
            e1.printStackTrace();
        }
        context.responseComplete();
    }
}






Reply via email to