JSF не находит компонент в корне представления с идентификатором формы - PullRequest
7 голосов
/ 06 апреля 2010

У меня по адресу: inputFileUpload внутри формы, в html отображаемой страницы идентификатор этого компонента: form: inputFile, но когда я попытался получить компонент из корня представления, используя «form: inputFile», возвращаемое значение равно нулю , но когда "form:" удален, возвращение является компонентом. Компонент не устанавливает значение в моем управляемом компоненте, у кого-то есть эта проблема?

EDIT:

<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");

Возвращает тот компонент, который я ищу, но когда я использую View Source в Internet Explorer, идентификатор этого компонента - «form: inputFile».

Я не знаю, связано ли это с этим, но компонент не устанавливает значение в моем управляемом компоненте, и странно, что идентификатор компонента отличается от источника HTML. Я использую JSF 1.2 Mojarra. У кого-то еще есть эта проблема? Или знаете, почему это происходит?

EDIT2: Хорошо, я очень глупый, очевидно, сборка не работала правильно, и когда сборка была изменена на другую задачу из Ant, она работала (до сих пор не знаю почему, но просто работала). Извините за беспокойство.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2010

Вы должны использовать компонент binding или UIViewRoot#findComponent(). Но это не решит проблему не загруженного загруженного файла. Чтобы исправить это, первый шаг - убедиться, что вы правильно определили и настроили ExtensionsFilter в соответствии с документацией Томагавк , поскольку именно он отвечает за синтаксический анализ запроса multipart/form-data и размещение всех параметров среди с загруженным файлом обратно в карту параметров запроса, чтобы FacesServlet мог применить их и обновить значения модели.

0 голосов
/ 06 апреля 2010

Полагаю, findComponentInRoot - это , это (небольшая деталь, которой вы должны были поделиться).

В любом случае, используя findComponent(..) или getChildren(..), всегда возвращайте id компонентов, как определено на странице. Идентификатор html - это нечто другое, состоящее из naming container:id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...