0

環境 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
.
.

}

4

0 に答える 0