Отображение изображения BLOB с использованием <p:graphicImage>
следующим образом.Отображение BLOB-изображения с использованием p: graphicImage в файле тегов
<p:graphicImage value="#{categoryBean.image}">
<f:param name="id" value="7"/>
</p:graphicImage>
Где CategoryBean
была определена следующим образом.
@Named
@ApplicationScoped
public class CategoryBean {
@Inject
private CategoryService service;
public CategoryBean() {}
public StreamedContent getImage() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
return new DefaultStreamedContent();
} else {
String id = context.getExternalContext().getRequestParameterMap().get("id");
byte[] bytes = Utils.isNumber(id) ? service.findImageById(Long.parseLong(id)) : null;
return bytes == null ? null : new DefaultStreamedContent(new ByteArrayInputStream(bytes));
}
}
}
Что касается вышеуказанного подхода, следующий пользовательский тег должен работать безупречно, но он не может отобразить изображение на <p:graphicImage>
без ошибки/исключения.
<my:image bean="#{categoryBean}" property="image" paramName="id" paramValue="7"/>
Файл тега находится под /WEB-INF/tags/image.xhtml
.
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<p:graphicImage value="#{bean[property]}">
<f:param name="#{paramName}" value="#{paramValue}"/>
</p:graphicImage>
</ui:composition>
Сформированный <img>
тег кажется выглядеть хорошо:
<img id="form:j_idt4"
src="/ContextPath/javax.faces.resource/dynamiccontent.properties.xhtml?ln=primefaces&v=5.3&pfdrid=IA0%2F7ZuBnGS%2BSzeb%2BHyPOTo4Pxp4hjI6&pfdrt=sc&id=7&pfdrid_c=true"
alt=""/>
Это только возвращает ошибку 404 HTTP.
Есть ли недостаток в определении настраиваемого тега?
я не чувствовал себя плохо, но есть некоторые замаскированные PrimeFaces ребята, которые не любят публично выставляя ошибки в их программном обеспечении непрерывно вниз голосование, когда я отправляю вопрос, раскрывающий давнюю ошибку? – Tiny