Согласно вашему собственному ответу на эту тему:
Я удалил тег f: дословно, и теперь он работает правильно.Я до сих пор не понимаю, почему это вызвало такое поведение.
<f:verbatim>
был введен в JSF 1.0 довольно давно с единственной целью, чтобы иметь возможность включать простой HTMLв дереве компонентов JSF.В JSF 1.0 (и 1.1), когда строилось дерево компонентов, весь простой HTML игнорировался.Страница обрабатывается сначала со всем простым HTML, а затем с обработанным HTML-компонентом JSF , а затем .Так, например,
<p>Hello</p>
<h:inputText />
<p>World</p>
<h:outputText value="outputtext" />
<p>This is weird</p>
визуализируется как
<p>Hello</p>
<p>World</p>
<p>This is weird</p>
<input type="text" />
outputtext
<f:verbatim>
позволил разработчикам переносить простой HTML в дерево компонентов JSF, чтобы они отображались «синхронно» каквы ожидаете от кодирования.
<f:verbatim><p>Hello</p></f:verbatim>
<h:inputText />
<f:verbatim><p>World</p></f:verbatim>
<h:outputText value="outputtext" />
<f:verbatim><p>This is weird</p></f:verbatim>
Они, однако, встроены во время просмотра build time, а не во время просмотра render time.Это является причиной вашей проблемы: геттеры вызываются во время фазы просмотра восстановления вместо фазы ответа рендеринга.
Начиная с JSF 1.2, с улучшенным обработчиком представления, стало возможным встроить простой HTML «синхронно» безхлопот с уродливыми <f:verbatim>
тегами.Так что это больше не нужно.Также больше нет полезных вариантов использования тега, возможно, ожидается некоторая преждевременная оптимизация производительности, но тем не менее не следует использовать его в сочетании с динамическими данными, полученными с помощью языка выражений.
Смежные вопросы: