Ваш вопрос демонстрирует полное недопонимание того, как работает не только технология JSF, но и природа HTTP-коммуникаций и веб-серверов, присущая без сохранения состояния.
Как правило, в настольном приложении этот простой алгоритм, который вы перечислили выше, может бытьлегко реализуется, возможно, с помощью модальных диалогов и событий.Веб-приложения не работают таким образом, потому что они изначально не имеют состояния.Пользователь или агент браузера отправляет HTTP-запрос веб-серверу, сервер обрабатывает этот запрос и формулирует ответ, а затем возвращает этот HTTP-ответ обратно агенту браузера, который будет обработан.Обычно эти данные могут быть текстовыми, HTML, XML, Javascript, CSS, изображениями или даже файлом.
Проблема с включенным выше алгоритмом на сервере состоит в том, что функциональность для askUser
не может быть выполненасервер, потому что сервер не может просто задать пользователю вопрос и ждать ответа.Это было бы задом наперед.Пользователь является клиентом и задает вопросы серверу.
Так как же решить эту распространенную проблему в веб-приложении?В JSF сервер может отправить в ответ Javascript в браузер, который позволит браузеру задать вопрос, затем, когда пользователь делает выбор, Javascript может затем отправить выбор пользователя обратно на сервер в HTTPзапрос.Если этот выбор предполагает какие-либо изменения в DOM или элементах страницы, тогда эта информация будет отправлена в ответе.
JSF устраняет разрыв между настольными и веб-приложениями, позволяя создать иллюзию функциональности рабочего стола и событий, управляемых событиями.к другой технологии без сохранения состояния, и она делает это, имея жизненный цикл события на стороне сервера и используя Ajax для жесткого контроля изменений в элементах документа.
Хороший учебник по технологии JSF можно найти здесь, однако я рекомендую статьпрежде чем углубляться в подробности, ознакомьтесь с HTTP и Java-сервлетами: http://www.mkyong.com/tutorials/jsf-2-0-tutorials/