Hi Udo,

I saw your comment to my blog entry and see this thread just now,

Well, I have created an image using your hex code, a phaselistener and h:graphicImage. Hex to byte[] code is an example from java forums. Anyway, the output of your hex code is a picture of flowers right, seems it is working:)

Here is the PhaseListener;

package somepackage;

import java.math.BigInteger;

import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId ;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ImagePhaseListener implements PhaseListener {

    public final static String IMAGE_VIEW_ID = "hex_image";
   
    private Log log = LogFactory.getLog(ImagePhaseListener.class);

    public void afterPhase(PhaseEvent event) {
        FacesContext context = event.getFacesContext();
        String viewId = context.getViewRoot().getViewId();
        if (viewId.indexOf(IMAGE_VIEW_ID) != -1) {
            log.debug("Handling image request");
            handleImageRequest(context);
        }
    }

    public void beforePhase(PhaseEvent event) {
            //Do nothing here...
    }

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

    private void handleImageRequest(FacesContext context) {
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
        response.setContentType("image/jpeg");
        response.setContentLength(4066);
        try {
            String hex = "FFD8FFE000104A46494600010100000100010000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232FFC00011080066006A03012200021101031101FFC4001B00000202030100000000000000000000000506030700010402FFC4003A100001030302050204030605050000000001020304000511122106133141512261147181911523A1073242B1C1D11625337292445273E1F1FFC4001B01000203010101000000000000000000000203000105040607FFC40029110002020201040201030500000000000001020011030421122231410513517191B1326181C1F0FFDA000C03010002110311003F00BBF462B34835269F7AC29DEA4A322D2335B2302BDE2B4A1EF5254E75AC246F5CCF3FE9246F53C864A9340AE53D9B61692FA88E728A13B77092AFE9FA8A186A09200904B9B97797A8051DC027734354A4B849041DF071E6B924BECCBB846255BB8A2948FA7FEAA6BADBA4DBE1A64C2381AFF312AF56AFBFCBAD0DDCD56F8C2AA075771F466CA6B4123BD430E7A266B484143A8FDE41F1E6A742D2E36169E86A5CCECB89F131471444D288C6C2A322A6C77AF045145484A76F35E748F153115AD3524966815B20019AE69AF2E3DBDF79BD216DB654350C8D8668143E2A796C85C8880A543214D1C7E87FBD5DC763D7C9914B20B99378DAD6CC72B88B5497356909D25001F7246D40A771A4D47E53F1A13AD389FF004D2B215F7CD03F8B448BA4A6647362B4EACAD4D2104EA24EF8237C6F5CB7E54416F31ADF05C2F20613AD18A0622AEE7A3C1F17AEAC15D49B8FB68E21FC4186D214528650A71D2EEEE2C0380079EBD7DBA026A296B62E17882A5A1C69D4092CA01E9CDC247D7D3A8D23DB5892988CA96F24940C38D058D4B237054904109CF7F38DB15E5574B8DC50A3F1ED32B66407A2B8B7348192A4AB71D09DC907A8E80770B3EE646D691C3909C7C8063140B0B264B6F15BA892824A139CFD68D4C8373723968C825B3FF73605295A7F6806DEC08E23EA4B49012A7318E83A104E71D3B5754BFDA4392195A52C202B1E9232403EF427228334FEBDBCCC1FA78FEF03CE8AB66E8CB5CF2DAD4541B7104EF8EC718AEFB44C4A9975A71785B654BCAB00E9D4704FDB140DFBC26E717E1DC6D2D3E824A16938C1ED8F150BB70369B84889CD0B473429CDC12A20023A9FF6E7E46A06F703E4B19C8CB8EBBA39B8EA10E21A2AF5AF3A479C56CEE4508B8B0FC8B5C39915CD4EE703AFEF75F1DF15E3F107E1BC639482509D6E6BCF53D81F6E9F4A3EAE67037C639A18CD9863A1AD64D41125B731AD68D88EA3C54D9A3B99CE8C8C5585112CB5A10E36A42D21485021408C822AB9E2616FE1DB9B0C3525C4A1C6CAD4D294484277031F3DF626840E28E208CDAA6B4B712DA54094BAA2B0B1EC0D735C2EF1AE73D976EACF343E8CBA1274A920F4D3E081DBFBD0B357137F5FE3F36ABF539B5FC08CF61F87B9A549412C2746B494A02750C907AF8C7EA2B2F8888DC6434C32D28B848321C1929C75273BD2B44BEB906D2E301AE6436DC7034E9187084EC7D23AECAEA2B96E7C62C048E52A3A0A87A836BCEE3000391B0D3FCBEE9390D54A0E464FB2FB4425780A836D4C3B4447A4ADC5A4499206025246773DBFA0AE662DAC4AB6261CF774A8ACB6D3CDED839DBE5D850B7AF93DA80A62DA996653993312D37A4249CE00DFD49C139073ED8CEFE33727EDCD3658E5A82794DB415B04000A4EFBEAC9567BF4AB37E63B57672E4CB46E8FBFF70CDB6D522DAEA605C2536438AC34F2919D43B0CF407E74C0BE1980980B752D871C2082A50DC7CBC556B278967429288B3DCD6D8243895AB6C8247A4F5EDF4A6CB0F14485A64C4E496CA521495ABA818CE77FFE6C6A0715551BB3B2C4F0DFAFA83AE36A8E5890A4B8E2567263841034A87CF3B1C8F277EB4AC1B75CBC290FB8D9E78217858D8050C0DFDBC669BAEE1E936C0FEB743CE0284290A4A90AC02474EE493EDF4A0379B6AE64054C7141B623B6A79A2D1042403E3B93B7CF0286ED666E7DB36AD76C3F69616965888D679A1B08294A501435103A8F3DE82DD2F909B8CCB4EB6B53E145B775104A0F639EE0E7CD2831C560CC8F15B79EE621010E3870A39246C803A1CF5EF44EF30DD8D1E7F3125C52C21E46A1D73B1FB6D54B7EE68682FD9DC4C231AEAB8D2F5F213CB53606869272A3D8E7A79A636DF4ADB4ACE125401C1232292956E751711094B5A5943292A0125795637E9F5AE25DBE66B56195119D8E834E5EAA9D1B1F109B043DD1A960BF6ABA5DADED28940612AC6948D2563CEF41AE76888C3A57314E87BB15AC003ED4D77CE2111E386EDAB654B3B1D63013F2CE01A54BA58E3DEED1326FC53AECD2D6A0864EA208E9E9EF9A17367C45E3CB902F538A58BDFE1A1C5680B8AFA90C32E969D7F195149C9C01D3B7EB441CE0D6AD780DC343AD1FE2527513F3CF7A09FB38BE474F13336F70A12DAD2E32877F894A51053ABB744E07CEADF75F10DEE52C0C647DB342454E6C39D5DD9C2837FC4AE2D56DBA4994EC78062B0C8253839C800EDE9FD6883F0FF01B9B082F29E050A75DC8D93818D80F7ED4D2E4045D9F57C132528CE92F23657F4C57A7787A3C16D521D0AE6018E6BCE6B5A8F603B0A3A153BDF752FA4F02BC4AEB87B845EE21E279326F081F0CB25D119432A482720157F0F4E82A1E2C8B6E6FF680D263A96151DB02436DA494A800545381D4E9C78EB9A6E55D1AE19616E25465CE782821A6F7D6E1DC247B0006F55719B74B7DF3E29C71ED4EBC5C794E6A090E28602F18ED9F1B8DB7A83998DB8A12C278FCC7C525E9DC3864E5687186D41B584941D58C6BED9CE07D303B50B6E24FB9DADC5C779C941AD215AD6773E319C1C0C7DA8EC579A7AD4875B53C44E569521D0525202402529C74E9B93DCF9DA7E05893E3D9DF61B6995ACBEAD654ACE0EC318FA50A79AA9DBA8B88E3190A8247E62632A810662CAE325995904BC5AF56A07AEE3AE7BD33AA7377EB7729450890941E52D3D1C1DC63B7F7A277EE119F2D0243A865206492D20E7E477DEABBBF596EB0E3B6988E1E6A5649D04A15823B66ACA91EE76E46C431FD983C8E684B17876E7165CA7E4ADB70B8A6DB4A90119214010451FF00888C7FE99DFF0085549C3122F165962535394F13853F124A756B1FEEC9C1F7FBD195F135CDC714B10D785124618591BFD2AC3902711CBF6B13447F99E60710393E6F29119D756A0400A4E76FBED4CFC3D02642E218EE3E421B7F5214D206C3D24E7EE29B6C7C311E2A43CA6407C8F52B6C9F9E2BBAE111B6A430E818E52B24FD08FEB53A4D7718DD8F93C7918E2C6BC115288E33E01916CBEC8B8D89475A9CE686738524EACE507BEFDBF9D39C5E2963882D0C3C167F128A0896D018D2527B83E715BE27B9EBBA3C54A296586C6909232B709C7B9C0DBB7538A44B0F05CB6EFEAB8C8548111475270E72DC733B9D583B0CEC73B9F03B01EF056E67AE229907D22C9F3F812D6E1DE256E2DB97AD81A039BBE957A7D59C1DFA6F81535F6F898F6F5AE5F2DC4AD04101490956DBE37F5637D81CFE94AEF391E5A7E01C52DA4BA396396B1A771FBBD3E78A42160E225C876DA5F4FE1E85908716751233D8751EE3615415AA898FD8D3C9608164F9FF00BD461B63AB899BB4D21F90F02104EC96D03A607DA89AAF08BBC06CB4DB6CEB1EB49590A511B6D8EDD7AD0A9ADA94A6A011F965B39D3B9040DB1F5C50E66D118BC86E64A5B011D5684E750FE9F6A8090684F429A98863008BA9BE217AE2C4744B44D75D4B3201530F614A4150C652A1BE0EDB536F01F13C08525E7263E10890DA578C674A864107DE9267B41B75516DC5F94D152753850718073E3F5A36AE1C7DEB0AEE4DA79321595ABC2FE83CD4B37DB33F6B5531AB2E3F07D47CBB71D457F98D41429E404952D64694A463C9A4A9726E33511A43125A4992E29A70247A824018DC288CF4D88D89EF9A5F83722C5B1D95360ADD88E00856D8513A86C3DBC9FA77A34CC029853EE16E754E38A585A50B1B36003B0FA1F7A8093C999185066C8B8D3FA7DCD498EED8AEBF190187B5B88D2412085ABB03F7FB51944553ADA5C37975A2B0145BD47D19EDB9ED4B8ABF3CEB0DAA69795A1412AC0037EB9C77AE91786F1E91B76EBFDAAC38078334337C0F59EA4FE65D169BCC29139E84D3C14A41F4E723293B8C7DE87716DE62C260C6E727E256329403BE3CD7247B03AB425524492E360018230AC0F39181D31DC63E9432F9C190A6DB9F7111E7A2E0A185178974B833D323207B138F7A350C4F3C09E770665570CF146D96F7EE7244C79F42D0D255C94ABAEBDF7F6FD7A0A9130EF93F96CA24B4964820E93B9AF5C3F756586C5BA4971B7DA7940153471A00F492AF3B907DD3EF4D566650E3E2321690492E214075F4907F9E69CB8F588E1E7A5D3DAC6988BE2A3EE269E1C5B2A633256B515A7510B1B6083F7DA9891263B7714345B3F988D47D24F5CF7A2EEDBBE1E56A79E4A8A7493D7B7CE906E773468725C24BF2248CB486DB609F48380AD47A67734D64D65BA31B9F7D1943643EA169D0A444E228B3A3252E328565446F838C6E3DC5333976B13ADE5E89AA41EA80807EB9A44B4719322E2985758AFB01E01B6CA53A95AD4348C81F33D29A6E7F85C0679F2E4B6C6E06BDC0F18DFDF14031615BA7883B9AF9C805BC7B1C7EF259ED42B84521F5B316127D4B6DB5005433FC476DBCD2B717F162624211EDEDBAC450B0D2A46E95249191A463A7935ABD4E10E02DC59D6D286127B007CE3E74A17EBBD92E113420497A4A0E40D2909D58C63719ED9FE7E2985302D806CCE2DCDAC6A0E347E7F5845AE20902EB051F99223BCAC3DCC8B9696ACE429233B81FAE33BF67F8177B6BA994DC98EEB0A731A8A104A0103194F7C6D54CC6E2065129B71E84E20AFD0E1C800109D3E91F51D7A0DAAEDB1428B7D84A7233E10B48D241411F2383DB14BFAB003CB545E81D71659F98ACFB70D0F2D02630D2903D2B71B275A3B6DE46D4BEB533AD5FE6320EFD52D1C1F96F5664F868B4AB121D8EA75C3F96D049255F4F15CE03C464426B1FF8C7F7AE6C8A97DAD3D1E3DD045A9B12CAD64027C528F10C9946E26DB1AEB363BCA8EA94B700414A1B49C1D200492AC903738C66B2B29CD3E7E654926EA8778AD98D1654C75944AD2E2A48014E1DC904024119FBD1DE135CD679D31535CD487DDE5A001A52124A71B83D4E6B2B2B83380884AC2C4ECA78307F1171BCF944C78C9433AF5EB52C6A2AC1C1F18AACEE777BA7C42D97659C1393CBF4E6B2B29DADDDC987932BBF2C64969BBB50AF306E423842228D2B4A372B242B2ADCF5DFF953271F7113B78B6DB986D4E06164BA439D7A0091DFA026B2B29AE07D8A623DCB7B8238620A382E1225A04A2F3614A2EEE307A01F2A2DFE08E1B2AD46D11B38C7EED65653C000F10A795F0370D3830BB44750D65CC11FC47193FA0AEE470FDB9A46869A5358180A6D652A18DB623A5656551507C8901AF1244D96025E53DC9CBAAFDE714A2A51F993BD750830B1FE9AFF00E5595954517F11C36328E0319FFFD9";
            byte [] bts = convertHexToByteArray(hex);
            response.getOutputStream().write(bts);
        } catch (Exception exception) {
            log.error(exception.getMessage());
        }
        context.responseComplete();
    }
   
    private byte [] convertHexToByteArray(String hex) {
        byte[] bts = new byte[hex.length() / 2];
        for (int i = 0; i < bts.length; i++) {
            bts[i] = (byte) Integer.parseInt(hex.substring(2*i, 2*i+2), 16);
        }
        return bts;
    }
}


and the jsp code;
<%@ taglib uri="http://java.sun.com/jsf/html " prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <f:view>
            <h:graphicImage value="/hex_image.jsf" />
        </f:view>
    </body>   
</html> 

Regards,

Cagatay Civici,

Reply via email to