2012-01-18 9 views
0

Richaces 4、SEAM、およびJPAを使用してJBoss AS 7でWebアプリケーションを開発しています。私は豊かになることはできません:fileUpload働いています。どうやって作るのか分かりません。 rich:fileUploadを使って画像をアップロードするときに、データベースに挿入する必要があります。私は今何をしましたか:RichfacesとJPAを使用してデータベースに画像をアップロードする方法

  1. ファイルをアップロードするためのフォーム(Richfacesのデモから使用)がある.xhtmlページがあります。
  2. エンティティBeanを作成しましたUploadedImage.java(画像列の@Lobアノテーション付き)。
  3. entitymanagerを使用してアップロードされたイメージを維持するDAOクラス。
  4. EJBプロジェクトに接続するビューのUploadBean.java。
+0

どうしたの?エラーはありますか? –

+0

今はデータベースのバイトを挿入することができましたが、a4j:mediaOutputを使用してイメージを取得しようとすると、次の例外が発生します。 例外のハンドラが見つかりません:com.google.common.collect.ComputationException: java.lang.RuntimeError:java.lang.NullPointerException –

答えて

1

誰もが同じ問題を持っている場合は、ここでどのように作業を取得するには、次のとおりです。

Upload.xhtml(画像のアップロードのためのフォームを含む):

<rich:fileUpload fileUploadListener="#{fileUploadBean.listener}" 
         stopButtonClass="file-upload-stop-button" 
         addButtonClass="file-upload-button" listHeight="0" listWidth="0" 
         id="upload" acceptedTypes="jpg, gif, png, bmp" allowFlush="true" maxFileQuantity="10"> 
         <a4j:ajax event="uploadcomplete" execute="@none" 
          render="info, imgs" /> 
        </rich:fileUpload> 

FileUploadBean.java(EJBクラスにデータを配信):

@Named() 
@RequestScoped 
public class FileUploadBean implements Serializable { 

    private static final long serialVersionUID = 1L; 


    @Inject 
    private CMSDao cms; 

    private Integer pid; 
    private String name; 
    private String aname; 
    private byte[] data; 


    public FileUploadBean() {} 
    private ArrayList<UploadedImage> files = new ArrayList<UploadedImage>(); 
    private List<UploadedImage> filess; 

    public void listener(FileUploadEvent event) throws Exception { 
      UploadedFile item = event.getUploadedFile(); 
      UploadedImage file = new UploadedImage(); 
      file.setName(item.getName()); 
      file.setData(item.getData()); 
      files.add(file); 
      cms.insertImg(file); 

     } 
    //getters and setters 

EJBクラス:

public void insertImg(UploadedImage img) { 
      em.persist(img); 
      em.flush(); 
     } 

UploadedImage.java(エンティティBean):

@Entity 
@Table(name="photo") 
public class UploadedImage implements Serializable { 
    private static final long serialVersionUID = -8192553629588066292L; 
    @Id 
    @GeneratedValue 
    @Column(name="pid") 
    private Integer pid; 
    @Column(name="name") 
    private String name; 
    @Column(name="aid") 
    private String aname; 
    @Lob 
    @Column(name="data") 
    @Basic(fetch = FetchType.LAZY) 
    private byte[] data; 
// getters and setters 
あなたはあなたに次のコードを追加する必要が
0

私はそれを動作させる方法がわかりませんが、私がコンポーネントを使用したとき、私はそれが大きくて扱いにくい方法を見つけました。私はRichFacesを使用していますが、これに対してははるかに簡単なTomahawkコンポーネントを使用しています。あなたは、ファイルアップロード用multiPartFormのサポートを必要と

を覚えておいてください...

MAG、 ミロファンデジー

1

のweb.xmlファイル

<context-param> 
    <param-name>org.richfaces.fileUpload.maxRequestSize</param-name> 
    <param-value>250000</param-value> 
</context-param>  


<context-param> 
    <param-name>org.richfaces.fileUpload.createTempFiles</param-name> 
    <param-value>true</param-value> 
</context-param>  

250000は最大リクエストサイズfilまで250kbsを意味しますeをアップロードする

関連する問題