0

このための完全なガイドを探して、しばらく見回しました。私は2日間ほどJSFを使用しており、pdfファイルをサーバーにアップロードするページを作成し、そのファイルパスを他のユーザー入力テキストフィールドとともにデータベースに入れようとしています。

これが私のフォームです(今のところ)

<h:form enctype="multipart/form-data">
        <h:outputText value="Name: " />
        <h:inputText id="name" size="40" value="#{resumeBean.name}" required="true"/> <br/>
        <h:outputText value="Position Sought: "/>
        <h:inputText id="position" size="40" value="#{resumeBean.position}" required="true"/> <br/>
        <h:outputText value="Date: " />
        <h:inputText id="date" size="40" value="#{resumeBean.date}" required="true" /> <br/>
        <h:outputText value="File to upload: " />
        <t:inputFileUpload value="#{bean.resume}" /> <br/>
        <h:commandButton value="submit" action="#{bean.submit}" />
        <h:messages />
    </h:form>

そして、このBeanはファイルを処理します

   package com.example;

import java.io.IOException;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import org.apache.commons.io.FilenameUtils;
import org.apache.myfaces.custom.fileupload.UploadedFile;

@ManagedBean
@RequestScoped
public class Bean {

    private String name, position, date;
    private String fileName;
    private UploadedFile resume;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public void setResume(UploadedFile resume) {
        this.fileName = resume.getName();
        this.resume = resume;
    }

    public UploadedFile getResume() {
        return resume;
    }

    public String getFileName() {
        return fileName;
    }

    public void submit() throws IOException {
        String fileName = FilenameUtils.getName(resume.getName());
        String contentType = resume.getContentType();
        byte[] bytes = resume.getBytes();

        // Now you can save bytes in DB (and also content type?)

        FacesContext.getCurrentInstance().addMessage(null, 
            new FacesMessage(String.format("File '%s' of type '%s' successfully uploaded!", fileName, contentType)));
    }
}

web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="timesheet2" version="3.0">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>faces/login.xhtml</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
  <listener> 
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
  </listener> 
  <filter>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
  </filter-mapping>
</web-app>

しかし、ここから先に進む方法がわかりません。助けてください。前もって感謝します

4

2 に答える 2

2

BalusC は、JSF 2.0 および 2.1 用の純粋な JSF ベースのカスタム タグ コンポーネントを構築することにより、ファイルのアップロードに関するブログ投稿を作成しました。JSF 2.2 以降、ファイル アップロード用の JSF コンポーネントがあります: <h:inputFile>.

また、 PrimeFaces FileUploadRichFaces FileUploadなどの別の実装を見ることもできます。

于 2012-07-24T21:02:57.100 に答える
1

PrimeFaces FileUploaderをお勧めしますか?

于 2012-07-24T20:54:06.767 に答える