1

サーブレットで機能するアップロード ルーチンがあります。今、私はこのルーチンを次のようにjsfマネージドBeanに入れようとしていました:

 public void uploadFile() throws IOException, ServletException{

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
    HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();


    Part filePart = request.getPart("item");
    String filename = getFilename(filePart);
    InputStream filecontent = filePart.getInputStream();

    //persist the data here

}

サーバー上で実行しようとすると、もちろんエラーメッセージがあります:

しかし、この注釈をどこに置くべきかわかりません。マネージド Bean の jsf 生成サーブレットの名前も持っていないため、web.xml にも配置できません。このルーチンをマネージド Bean に入れるのは一般的に悪い考えですか、それともサーブレット バリアントに固執する必要がありますか?

4

1 に答える 1

1

@MultipartConfig基本的に に装着する必要がありますFacesServlet。自分で行うことはできませんが、これは次期 JSF 2.2<h:inputFile>ですでに行われており、ajax をサポートする新しい標準コンポーネントが完備されています。JSF 仕様の問題 802も参照してください。

それまでは、サードパーティのコンポーネント ライブラリを入手するか、カスタム コンポーネントを自作するのが最善の策です。

于 2012-10-12T09:40:27.703 に答える