Hi, what you're doing is trying to use a @Insert component to insert a blob in your page. It will never work like that since Tapestry will actually try to display the string representation of your blob (if you call personImage.toString() you'll get exactly that "[EMAIL PROTECTED]"). You need something a bit more sophisticated. I've done exactly what you're trying to do so I'll explain it to you. I won't past all my code since it's very application-specific.
First you need to create a service that will produce the image contents, so create a class for that. Something like this: public class ImageService implements IEngineService { public ILink getLink(boolean isPost, Object parameters) { Object personId = parameterArray[0]; Map serviceParameters = new HashMap(); serviceParameters.put(ServiceConstants.SERVICE, getName()); serviceParameters.put(ServiceConstants.PARAMETER, new Object[] { personId }); return linkFactory.constructLink(this, isPost, serviceParameters, true); } public String getName() { return "personImage"; } public void service(IRequestCycle cycle) throws IOException { // here you have to set the appropriate content type // I'm assuming it's a jpeg image. ContentType contentType = new ContentType("image/jpeg"); OutputStream outputStream = webResponse.getOutputStream(contentType); Object[] parameters = linkFactory.extractListenerParameters(cycle); Integer personId = (Integer) parameters[0]; // you have the ID, so here you do whatever you have to do // to fetch the person object Person person = whatever... // then you have to write the image contents to the output stream. int length = person.personImage.length(); outputStream.write(person.personImage.getBytes(0,length)); outputStream.close(); } } On the html page you'll have to use an img tag with the source being the service you just created: <img jwcid="@Any" src="ognl:imageLink"/> On the component's java class you'll need something like: // This is the hivemind service being injected @InjectObject("service:ImageService") public abstract IEngineService getProductImageService(); public String getImageLink() { Object[] parameters = new Object[1]; // I'm assuming there is a "person" variable in page // with the person object you want to display. parameters[0] = person.personID; return getProductImageService().getLink(false, parameters).getAbsoluteURL(); } ... next you'll also have to tell hivemind about the service in your hivemodule.xml <service-point id="ImageService" interface="org.apache.tapestry.engine.IEngineService"> <invoke-factory> <construct class="my.package.ImageService"> <set-object property="linkFactory" value="infrastructure:linkFactory"/> </construct> </invoke-factory> </service-point> <contribution configuration-id="tapestry.services.FactoryServices"> <service name="personImage" object="service:ImageService"/> </contribution> That's more or less how I did it. I think that's about it, but if I forgot anything I guess the docs can fill in. Denis -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: segunda-feira, 6 de março de 2006 17:22 To: tapestry-user@jakarta.apache.org Subject: Database Images I am still trying to figure out how to display jpg's stored in our oracle database. I have a person class that has the following fields: private String personID; private String personName; private Blob personImage; I create a list of these perons as I return data from the database. My HOME.page contains <component id="personImage" type="Insert"> <binding name="value" value="currentPerson.personImage"/> </component> and my HOME.html has <td><span img jwcid="personImage">Test image 3</span></td> The page works though the browser but I get [EMAIL PROTECTED] retuned in the html table(with different data after the @ ) I looked at the examples but, since I am new to this, they did not help. Any suggestions. Thanks Calvin -- -- "There is no psychiatrist in the world like a puppy licking your face." Ben Williams Please visit: http://mywebpages.comcast.net/tnczo o/ http://mywebpages.comcast.net/cedma il/backpacking/index.html http://groups.yahoo.com/group/Backp ack_PA/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]