Очень похоже на выпуск 1492 . Вот цитата актуальности:
Это проблема курицы / яйца с частичным сохранением состояния. Представление выполняется для
заполните представление до применения дельта-состояния, чтобы мы увидели поведение, которое вы
описано.
На данный момент я не вижу четкого способа разрешения этого варианта использования.
Обходной путь, если вы должны использовать привязки в области видимости, будет установка
javax.faces.PARTIAL_STATE_SAVING
в ложь.
Возможно, Primefaces неявно связывает загруженный файл с представлением, и вам необходимо добавить следующее в web.xml
:
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
</context-param>
Попробуйте и посмотрите, поможет ли это. Если это работает, вы можете рассмотреть возможность отключения, если только для определенного представления. Глобальное отключение частичного сохранения состояния, а именно, заметно увеличит использование памяти и / или полосы пропускания, в зависимости от метода сохранения состояния. Предполагая, что идентификатор представления /upload.xhtml
, используйте это:
<context-param>
<param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
<param-value>/upload.xhtml</param-value>
</context-param>
Вы можете указать несколько идентификаторов представлений через точку с запятой.