You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by SEAN CHEN <bl...@gmail.com> on 2005/04/26 18:54:48 UTC
Can Foreach and EngineService work together?
Hi,
Our application needs show a list of image stored in database. We implemented
a EngineService to stream images in DB to the page, just like the ChartService
did in the Tapestry sample application Workbench. Separately, it is
working fine.
But here is problem when I put it in a Foreach component.
Briefly our implementation like following:
// service define in .application
<service name="StreamImage" class="com.company.service.StreamImageService"/>
// StreamImageService is similar to ChartService
// StreamImageAsset is similar to Chart
// ImageProvider is similar to IChartProvider have the method to the
image as byte[]
public byte[] getImage();
// html.
<table jwcid="@Foreach" source="ognl:images" value="ognl:eachImage">
<tr><td>Name:</td>
<td><span jwcid="@Insert" value="ognl:eachImage.name"/></td>
</tr>
<tr><td colspan="2"><span jwcid="@Image" image="ognl:imageContent"/></td>
</tr>
</table>
// page specification.
<property-specification name="eachImage" type="com.company.ImageDescriptor"
/>
// page class implements ImageProvider
public abstract ImageDescriptor getEachImage();
/**
* return all images as a List.
*/
public List getImages() {
....
}
public byte[] getImage() {
String name = getEachImage().getName(); /// ---> here causes
problem in Foreach.
//... get image from database based on the name.
// stream it to byte[]
}
/**
* the image asset.
*/
public IAsset getImageContent() {
return new StreamImageAsset(getPage().getRequestCycle(), this);
}
But the problem is the return of getEachImage() in method public
byte[] getImage()
of Page class is Null! I can get each image name as the Insert
Component did, BUT
I can not get each image for the Image component because we use an
engine service
to create the IAsset? Why? How to solve it?
Any idea?
Thanks a lot
Sean
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org