2015-02-25 3 views
0

Я определил форму как multipart/form-data enctype. Когда я нажимаю кнопку команды, запрос не отправляется с типом контента «multipart/form-data».multipart/form-data enctype ignored

<h:form id="form" method="post" enctype="multipart/form-data"> 

    <input type="file" ></input> 

    <p:commandButton id="save" icon="saveBt" value="#{msgs.saveBt}" ... /> 

</h:form> 

В консоли инструментов разработчика я вижу Content-Type как application/x-www-form-urlencoded; кодировка = UTF-8.

Я работаю с JSF 2.1 и Primefaces 5.1.

Благодаря

+0

Можете ли вы обновить JSF? "* Я не использую' ', потому что он не работает с атрибутом ajax и mode, установленным на« simple »*». Это действительно необходимо - 'mode =" simple "' всегда требует 'ajax =" false "' (Это заданное поведение). – Tiny

+0

Я предполагаю, что вы предлагаете мне перейти на 2.2 из-за h: inputFile. Я работаю с JBoss 7.1 (поставляется с JSF 2.1), и я не уверен, можно ли перейти на JSF 2.2. – Eduardo

+0

Я тоже не использовал JBoss. Поэтому я не уверен в этом, если он совместим с JSF 2.2 (это все зависит от версии сервлета. JSF 2.2 требует по крайней мере Servlet 3.0 главным образом из-за ''). Вы можете перейти на JSF 2.2, если эта версия JBoss (7.1) поддерживает Servlet 3.0. – Tiny

ответ

1

Вы используете JSF и Primefaces, поэтому используйте <p:fileUpload> вместо <input type="file">. Взгляните на пример official demo.

+0

Спасибо за ваш ответ. Я не использую , потому что он не работает с атрибутом ajax и mode, установленным на «simple». На самом деле, я пробовал, что @BalusC объясняет в http://balusc.blogspot.com.es/2009/12/uploading-files-with-jsf-20-and-servlet.html. Но опять же, он не работает с ajax. Я видел, что проблема заключается в том, что форма не передается с типом контента multipart/form-data, когда запрос является ajax-типом. – Eduardo

+0

Это работает, если вы используете '' вместо ''? Взгляните на [эту тему] (http://stackoverflow.com/questions/19262356/file-upload-doesnt-work-with-ajax-in-primefaces-4-0-jsf-2-2-x-javax -servlet-s) для получения дополнительной информации, если вы еще не прочитали ее. –

+0

Еще раз спасибо. Да, я читал это раньше. Тот же результат используется с помощью . – Eduardo