我還沒有嘗試使用data uri scheme帶掛圖中的圖像 - 我確定它'可以'正常工作,但要打電話給你,只需在tml中加入:
<t:DBImage image="${entity.BlobImage}" />
並且在您的DBImage組件中,您需要一種將image
參數轉換爲字節數組的方法。
我不想把創造這種技術的工作示例的時間,但我是如何解決這類問題,我會帶你穿越:
就像任何圖像渲染HTML中文件中,必須有兩個單獨的請求(除非使用數據URI方案):
- 頁面的HTML渲染圖像標籤(即
http://host/context/app/mypage
)
- 圖像數據(即
http://host/context/app/myimage
)
所以對於一個要求,要構建圖像URL並把它放在一個img標籤:
<html>
...
<img src="/context/app/myimage/params" />
...
</html>
,並要求兩人將只返回圖像數據的字節流。
讓我們從第二個請求開始,因爲這樣做更有意義。
在掛毯中,通過創建頁面類和可選的tml
模板來處理單個請求。爲了提供字節流,您只需要頁面類。要將參數或上下文傳遞給頁面,可以使用上下文參數。
package myproject.pages;
public class MyImage
{
public StreamResponse onActivate(String parameter)
{
// retrieve your image using the context parameter(s)
final InputStream imageStream = getImage(parameter);
return new StreamResponse()
{
@Override
public InputStream getStream() throws IOException
{
return imageStream;
}
@Override
String getContentType()
{
return "image/png";
}
@Override
void prepareResponse(Response response)
{}
};
}
}
在這一點上,你可以申請/使用URL的 「http://主機/上下文/應用/ MYIMAGE /參數」 渲染圖片。現在你只需要包括這在你的img標籤,即要求1.
所以,你需要首先生成的鏈接,這需要在你的頁面類來完成:
包myproject.pages;
public class MyPage
{
@Inject
private PageRenderLinkSource pageLink;
public Link getImageLink()
{
return pageLink.createPageRenderLinkWithContext(MyImage.class, parameter);
}
}
所有這就是左邊是使用您的TML此鏈接:
<img src="${imageLink}" />
顯然,你需要線了您的參數和檢索。
http://wiki.apache。org/tapestry/Tapestry5HowToStreamAnExistingBinaryFile鏈接到文檔 – user1516873