1

次のコードは、名前と呼ばれるデータモデルにストリームがある一連の画像をロードします。私の問題は、 p:datatable タグ内で var を宣言すると、何もないように見えることです。何か案が?どうも!

<p:dataTable value="#{controlador.names}"  var="nombre" rendered="true">
                <p:column rendered="true">
                    <h:outputText value="#{nombre.stream}"/>
                    <p:graphicImage value="#{nombre.stream}"/>
                </p:column>
            </p:dataTable>
4

3 に答える 3

1

この問題で見つけた多くのソリューション(つまり、パラメーターや属性を含む)を実装するプロセスに何時間も費やした後、実際に機能することがわかった唯一のソリューションは、ここにあります:PrettyFacesを使用した動的コンテンツの提供

于 2012-02-10T05:50:05.710 に答える
1

p:graphicImage は別のリクエストを使用するため、このように managedBean に識別子を渡す必要があります。

<p:dataTable value="#{productManaged.products}" var="productIterated">
     <p:column>
          <f:facet name="header">
               <h:outputText value="#{product.pic}"/>
          </f:facet>
          <p:graphicImage value="#{productManaged.dynamicProductImage}">
               <f:param name="product_id" value="#{productIterated.id}"/>
          </p:graphicImage>
     </p:column>
</p:dataTable>

気をつけなければならないもう 1 つのことは、StreamedContent で何かを返すか、失敗することです。次のようにします。

public StreamedContent getDynamicProductImage() {
       String id = FacesContext.getCurrentInstance()
                       .getExternalContext().getRequestParameterMap().get("product_id");
       if(id!=null && this.products!=null && !this.products.isEmpty()){
           Integer productId = Integer.parseInt(id);
           for(Product productTemp:this.products){
               if(productTemp.getId().equals(productId)){
                   return new DefaultStreamedContent(
                        new ByteArrayInputStream(productTemp.getImage()),                            
                             productTemp.getMimeType());
               }
           }
       }
       return new DefaultStreamedContent(
                        new ByteArrayInputStream(this.products.get(0).getImage()), 
                             this.products.get(0).getMimeType()); //if you return null here then it won't work!!! You have to return something.
}

または、このスレッドを読むことができますhttp://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=4163

于 2010-10-04T03:26:48.743 に答える
0

を取り外します<h:outputText>ストリームは 1 回だけ読み取ることができます。二度と読み直すことはできません。

パーツに関してp:graphicImageは、 の値でフィードする必要がありますDefaultStreamedContentこのブログエントリも参照してください。

于 2010-05-25T15:03:37.340 に答える