Ответ 1
@ViewScoped
специфичен для JSF-структуры MVC, а не для CDI-схемы ввода-вывода. Сфера охвата живет до тех пор, пока вы взаимодействуете с одним и тем же представлением JSF. CDI не имеет понятия "взгляды". Альтернативой CDI является @ConversationScoped
, который живет дольше, чем область запроса, но короче, чем область сеанса. Вам нужно только контролировать завершение самостоятельно. Вы можете при необходимости использовать MyFaces CODI, чтобы скрепить JSF @ViewScoped
на CDI @Named
beans. Предстоящий JSF 2.2 будет иметь совместимый с CDI @ViewScoped
в пакете javax.faces.view
.
В JSF @FlashScoped
не существует. JSF флэш-область существует, в основном, картой, которая поддерживается короткоживущим файлом cookie, который выживает при переадресации HTTP. Вы не можете позволить JSF помещать управляемый beans в эту область. Вы должны вручную ввести/получить значения в/из карты самостоятельно и/или использовать ссылку #{flash}
в EL, которая в основном указывает на карту. Seam Faces, однако, захватил JSF-специфический пакет javax.faces.bean
для его аннотации @FlashScoped
, но это определенно не из стандартного API JSF.
См. также:
- Добавить элементы в список с запросом Bean - содержит некоторые конкретные примеры альтернатив CDI