У меня есть t:inputFileUpload в форме в HTML страницы дисплея, идентификатор этого компонента является form:inputFile, но когда я пытался получить компонент от корня представления, использующего "form:inputFile", возврат является пустым, но когда "форма": удален возврат является компонентом. Компонент не устанавливает значение в моем управляемом компоненте, у кого-то есть эта проблема?
Править:
<h:form id="form" enctype="multipart/form-data">
<t:inputFileUpload id="inputFile" size="40" value="#{managedBean.inputFile}"/>
</h:form>
В управляемом компоненте:
private UploadedFile inputFile;
с получением и наборами, обеспеченными Eclipse.
//This method scans the view root and returns the component with the id passed as parameter
findComponentInRoot("form:inputFile");
Это возвращает пустой указатель, но когда я использую:
//This method scans the view root and returns the component with the id passed as parameter
findComponentInRoot("inputFile");
Возврат является компонентом, который я ищу, но когда я использую Источник Представления в Internet Explorer, идентификатор этого компонента является "form:inputFile".
Я не знаю, связано ли это, но компонент не устанавливают значение в моем управляемом компоненте, и это странно то, что идентификатор компонента отличается от источника HTML. Я использую JSF 1.2 Mojarra. У кого-то еще есть эта проблема? Или знайте, почему это происходит?
EDIT2: Хорошо, я очень глуп, по-видимому, сборка не работала правильно и когда сборка была изменена на другую задачу от Муравья, это работало (все еще не знают, почему, но просто работал).Извините за беспокойство.
Вы должны использовать привязку компонента
или UIViewRoot # findComponent ()
. Но это не решит проблему того, что загруженный файл не установлен. Чтобы исправить это, сначала убедитесь, что вы правильно определили и настроили ExtensionsFilter
в соответствии с документацией Tomahawk , поскольку он отвечает за синтаксический анализ multipart / form -data
запрашивает и помещает все параметры вместе с загруженным файлом обратно в карту параметров запроса, чтобы FacesServlet
мог применить их и обновить значения модели.
Думаю, findComponentInRoot
- это это (небольшая деталь, которую вы должны были сообщить).
В любом случае, использование findComponent (..)
или getChildren (..)
всегда возвращает id
компонентов, как определено на странице. Идентификатор html - это нечто иное, состоящее из контейнера именования : id
.