環境 IDE: RAD 8.5 サーバー: Websphere 8.5 Primefaces 3.5、JSF 2.0
私は @ViewScoped で @ManagedBean を持っています
複数の添付ファイルが追加されるページを作成し、ユーザーが追加をクリックすると、すべての添付ファイルがデータベースに追加されます。ファイルのアップロードを処理し、アップロードされたファイルをリストに入れるメソッドはhandleFileUpload
、println が正しいファイル名とその他の詳細を表示するため、このメソッドではファイルが正常にアップロードされます。
データベースに添付ファイルを追加すると思われる方法はaddAttachmentAction()
、印刷List is Empty
されるため、アップロードされたものはすべて失われます。
編集: @SessionScoped Bean に対して同じコードが完全に正常に機能します
コード/アプローチの何が問題なのか教えてください。完全なコードは以下のとおりです
@ManagedBean
@ViewScoped
public class AttachmentBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = -8751473073670649932L;
private List<AttachedFileBO> attachedFileBOList;
private List<AttachedFileBO> deletedAttachedFileBOList;
private AttachedFileBO selectedAttachedFileBO;
private StreamedContent attachedFileStreamContent;
//getter setter for above declared field
.
public void handleFileUpload(FileUploadEvent event) {
try {
InputStream tempInputStream;
tempInputStream = event.getFile().getInputstream();
attachedFileBO attachedFileBO = new AttachedFileBO();
byte[] bytes;
bytes = IOUtils.toByteArray(tempInputStream);
attachedFileBO.setAttachedFile(bytes);
attachedFileBO.setAttachedFileContentType(event.getFile().getContentType());
attachedFileBO.setAttachedFileName(event.getFile().getFileName());
attachedFileBO.setDbAction("I");
Random random = new Random();
attachedFileBO.setAttachedFileTableId(random.nextInt());
// If file is already attached then add attached file to the list
if (getAttachedFileBOList() != null && !getAttachedFileBOList().isEmpty()) {
getAttachedFileBOList().add(attachedFileBO);
} else {
List<AttachedFileBO> tempList = new ArrayList<AttachedFileBO>();
tempList.add(attachedFileBO);
setAttachedFileBOList(tempList);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//After upload when I try to access the list of attachment then method below prints List is Empty
public void addAttachmentAction() {
if (getBusinessProcessAttachedFileBOList().isEmpty()) {
System.out.println("List is Empty");
} else {
logger.debug("List is NOT Empty");
}
//Rest of the coding
.
.
}
}
添付ファイルBO
public class AttachedFileBO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3886993061934034729L;
private int attachedFileTableId;
private int businessProcessId;
private byte[] attachedFile;
private String attachedFileName;
private String attachedFileContentType;
private String attachedFileExtension;
private String dbAction;
//Setter getter
.
.
}