次のデータテーブルがあります。
<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 を返すのはなぜですか? どうにかしてこの問題を克服できますか?
前もって感謝します :)