0

次のデータテーブルがあります。

<p:dataTable id="persons" styleClass="hide-column-names personTable"
            value="#{personListDisplayerBean.allPersonsModel}" var="person"
            paginator="true" rows="25"
            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="5,10,25,50,100"
            selection="#{personDetailsDisplayerBean.selectedPerson}"
            filteredValue="#{personListDisplayerBean.filteredPersons}"
            selectionMode="single" widgetVar="personTable">

            ...
            ...

            <p:column styleClass="person-list-image-column">
                <p:graphicImage styleClass="thumbnail"
                    value="#{personListDisplayerBean.getImageForPerson(person)}" />

            </p:column>
           ...
           ...

</p:dataTable>

(少し短くしました)

今私の問題に: メソッドgetImageForPersonは 2 回呼び出されます。この投稿で説明されている理由は次のとおりです。

p:graphicImage と StreamedContent を使用してデータベースから動的画像を表示する

最初にすべてを呼び出すのは問題ありませんが、2回目に呼び出すと、パラメーターとしてnullしか受け取りません...

メソッド自体は次のようになります。

String fileName = person.getObjectGUID();
File f = new File(fileName + ".jpg");
FileInputStream inputStream;
try {
   inputStream = new FileInputStream(f);
} catch (FileNotFoundException e) {
   return new DefaultStreamedContent();
}
stream = new DefaultStreamedContent(inputStream,"image/jpg");
return stream;

メソッドが 2 回目に呼び出されたときに、JSF がパラメータとして null を返すのはなぜですか? どうにかしてこの問題を克服できますか?

前もって感謝します :)

4

0 に答える 0