私はPrimefacesを使用してファイルをアップロードする方法やTomahawkを使用する方法を知っていますが、Apache Commons FileUploadを使用してファイルをアップロードしようとしています。ブロック。私のフォームはmultipart/form-data
を使用していますが、私のフォームを送信すると、コンテンツタイプはapplication/x-www-form-urlencoded
になります。ここに私のコードここApache CommonsでファイルをアップロードするためのJSFの入手方法FileUpload
<h:body>
<h:form enctype="multipart/form-data">
Upload File
<input type="file" name="file"/>
<p:commandButton value="Submit" action="#{viewBean.submit}"/>
</h:form>
</h:body>
である私は、含有量が上記タイプ印刷しようとすると、私のViewBean
@ManagedBean
@ViewScoped
public class ViewBean implements Serializable {
public void submit() {
String url = "/FileUploadServlet";
FacesContext context = FacesContext.getCurrentInstance();
try {
String contentType = context.getExternalContext().getRequestContentType();
context.getExternalContext().dispatch(url);
} catch (Exception e) {
logger.log(Level.SEVERE, "Exception when calling Servlet", e);
} finally {
context.responseComplete();
}
}
}
だから、それはapplication/x-www-form-urlencoded
を示しています。私は私のp:commandButton
にajax="false"
を置く場合は、submit()
方法であっても起動されませんが、私は(まだajax="false"
を保つ)enctype="multipart/form-data"
を取る場合submit()
が呼び出されますが、それはマルチパートでされていない、そして、それはapplication/x-www-form-urlencoded
なので、Apacheのコモンズが例外をスローするFileUploadそれはマルチパートではないからです。私が何をしているかのように見えます、私は複数の要求を得るようです。助けてください
ありがとうございました。このすべての情報を知っていることはとても素晴らしいことです。 –
ようこそ。 – BalusC
@BalusC '' Filter'を作成すると言っていましたが、 'h:form'に' enctype = "multipart/form-data" 'がある場合、アクションメソッドは起動しません。私はJSF 1.2です。なぜこれが起こっているのか教えてください。私は質問[ここ](http://stackoverflow.com/questions/14242293/hcommandbutton-is-not-firing-action-if-the-hform-has-enctype-multipart-form-d) –