2012-01-18 20 views
0

我正在使用Richaces 4,SEAM和JPA在JBOSS AS 7上開發一個Web應用程序。我無法致富:fileUpload工作。我不知道如何做到這一點。當通過rich:fileUpload上傳圖片時,我需要將它插入到數據庫中。我現在所做的:如何使用Richfaces和JPA將圖像上載到數據庫

  1. 我有一個.xhtml頁面,其中有一個用於上傳文件的窗體(用於Richfaces演示中的一個窗體);
  2. 創建實體bean UploadedImage.java(使用@Lob註解爲圖像列);
  3. 使用entitymanager堅持uploadedimage的DAO類;
  4. 和UploadBean.java用於將其與EJB項目連接起來的視圖;
+0

有什麼問題?有錯誤嗎? – 2012-01-18 16:14:27

+0

現在我設法將圖像字節插入到數據庫中,但是當我嘗試使用a4j:mediaOutput檢索圖像時,出現以下異常: 未找到異常處理程序:com.google.common.collect.ComputationException: java.lang.RuntimeError:java.lang.NullPointerException – 2012-01-21 10:01:46

回答

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, 米洛的van der Zee的

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表示250kbs到最大請求大小fil e被上傳

相關問題