在 o:graphicImage 中使用 f:param

Using f:param inside o:graphicImage

以下用于 p:graphicImage 但不适用于 o:graphicImage

问题:data_id 始终为空。

xhtml:

<p:dataScroller var="data"...
  <p:graphicImage  value="#{bean.imagel}" >
      <f:param name="data_id" value="#{data._id}" />
  </p:graphicImage>

豆豆:

public InputStream getImage(){

    String dataId = FacesContext.getCurrentInstance()
            .getExternalContext()
            .getRequestParameterMap()
            .get("data_id");

我也用 o:param 试过,结果相同。我错过了什么?

<p:graphicImage> 中的 <f:param> 是一个 PrimeFaces-specific trick 来让 StreamedContent 工作 "as expected"。

<o:graphicImage> 不支持它(标准 <h:graphicImage> 也不支持)。只需按照通常的方式将其作为 EL 方法参数传递即可。它以更干净的代码结束。

<o:graphicImage value="#{bean.getImage(data.id)}" />

public InputStream getImage(Long dataId) {
    // ...
}

另请参阅 documentation 中的代码示例。