У меня есть калитка, на которой есть поле для загрузки файлов. Иногда это поле для загрузки файлов скрыто, потому что пользователю не требуется прикреплять документацию. я назвалsetMultiPart(true)
на форме объекта, но я до сих пор (но редко) получаю эту ошибку:Форма калитки «ServletRequest не содержит многостраничный контент»
java.lang.IllegalStateException: ServletRequest does not contain multipart content. One possible solution is to explicitly call Form.setMultipart(true), Wicket tries its best to auto-detect multipart forms but there are certain situation where it cannot.
Полезные факты:
- Эта форма получает подано около 10 000 раз в день и я получаю эту ошибку 5-10 раз в день.
- Если пользователь, получивший ошибку, снова заполняет форму с помощью тех же данных, она будет работать нормально.
- Я никогда не мог реплицировать ошибку локально вообще.
- Несколько пользователей, с которыми я общался с этой ошибкой, говорят, что они не загружали файл.
Вот сокращенный вариант кода формы:
Form<MyObject> form = new Form<MyObject>("form")
{
@Override
protected void onSubmit()
{
//saving stuff here
}
@Override
protected void onValidate()
{
super.onValidate();
//This just highlights the fields on the form:
visitChildren(FormComponent.class, new FormValidationVisitor());
}
}
add(form);
form.setMultiPart(true);
form.setMaxSize(Bytes.kilobytes(5120));
Существует обычай валидатор добавляется в форму и есть некоторые AJAX обратных вызовов на некоторые из полой формы, но сама форма ISN 't AJAXy. Глядя на сгенерированный источник в браузере я получаю форма декларации вида:
form id="form4a" action="../wicket/page?12-1.IFormSubmitListener-form" encType="multipart/form-data" method="post" accept-charset="UTF-8"
Кнопка, которая представляет вид является стандартной калитка Кнопка на стороне Java и input type="submit"
на HTML стороне, хотя в представлении источника браузера я вижу атрибут jQuery18307179054977115189="23"
на входе.
Любые идеи? Я пробовал каждый способ просто копировать эту ошибку и не могу так НИКОГДА помочь вам дать, было бы здорово. Я использую Wicket 6.6.0.
Совет: вы можете форматировать встроенный код с обратными кавычками, например: ' – nalply
Спасибо, что убрали это для меня! –
Как вы пытались воспроизвести его? – biziclop