В чем разница между FacesContext и ExternalContext

В чем разница междуFacesContext а такжеExternalContext? Когда я могу использовать один или другой? Что имеет одно, а что имеет другое?

Следующий пример взят из книги JavaServer Faces 3-е издание:

 

Бобовый бэк:

public void handleMouseClick(ActionEvent e) {
    FacesContext context = FacesContext.getCurrentInstance();
    String clientId = e.getComponent().getClientId(context);
    Map requestParams = context.getExternalContext().getRequestParameterMap();
    // ...
}

Почему параметр запроса вExternalContext? Что такоеclientId? Он генерируется JSF при запуске приложения?

Ответы на вопрос(1)

Ваш ответ на вопрос