在我的应用程序中,我将数据库中的图像加载到Wicket图像对象中并显示它。这大部分时间都有效,但有一些令人讨厌的副作用(有时候列表中的图像交换,控制台中出现js错误)
我得到的错误是:
Resource interpreted as Image but transferred with MIME type text/html
这是我的 java :
final IResource imageResource = new DynamicImageResource() {
@Override
protected byte[] getImageData(final IResource.Attributes attributes) {
return bean.getImage();
}
};
和我的 html
<img wicket:id="image">
这是在浏览器中呈现的html代码:
<img src="./.?308-IResourceListener-homePanel-tabPanel-tabs-panel-data-rows-3-image">
我查看了tomcat的web.xml以获取mime-mapping - &gt;所有图像类型(png,jpg都是正确的)。我不确定我做错了什么。有人有想法吗?
我使用Wicket 6.16.0,Tomcat 7.0.54
答案 0 :(得分:1)
您可以尝试覆盖DynamicImageResource
configureResponse()
或setResponseHeaders()
,并使用ResourceResponse
response.setContentType("yourContentType");
上手动设置内容类型
答案 1 :(得分:0)
您的getImage()
可能会返回null
这是DynamicImageResource
@Override
protected ResourceResponse newResourceResponse(final Attributes attributes)
{
...
if (response.dataNeedsToBeWritten(attributes))
{
....
final byte[] imageData = getImageData(attributes);
if (imageData == null)
{
response.setError(HttpServletResponse.SC_NOT_FOUND);
}
else
{
response.setContentType("image/" + getFormat());
response.setWriteCallback(new WriteCallback()
{
@Override
public void writeData(final Attributes attributes)
{
attributes.getResponse().write(imageData);
}
});
configureResponse(response, attributes);
}
...
因此mimetype将设置为getFormat()
,默认为PNG。